執行緒同步一例

2021-09-06 08:30:20 字數 741 閱讀 7638

功能:主線程建立乙個副執行緒,然後主線程負責將鍵盤輸入的內容寫到buffer,然後通知副執行緒將資料列印,列印完後,副執行緒通知主線程繼續從輸入緩衝區中將讀到的字元寫到buffer陣列。當輸入quit命令時,主線程退出,副執行緒也會隨著主線程的結束而自動結束。

#include #include #include #include #include char buffer[128];

sem_t sem1;

sem_t sem2;

void *fun(void * arg)

printf(">>>%s",buffer);

if(sem_post(&sem1) == -1) //讀完了後傳送寫訊號

}}int main(void)

if(sem_init(&sem2, 0, 0) == -1) //將讀訊號初始化為0

if(-1 == pthread_create(&thread, null, fun, null)) //建立執行緒

dofgets(buffer, 128, stdin);

if(sem_post(&sem2) == -1) //寫之後傳送讀資源

}while(strncmp(buffer, "quit", 4) != 0); //輸入quit,主線程結束,副執行緒也就退出

Java 執行緒內 遞迴 Bug 一例

乙個執行緒的run方法裡使用遞迴方法,出了bug。private boolean ispass string creationid else thread.sleep 1000 60 falg catch interruptedexception e ispass creationid else r...

演算法優化一例

本文將以排序演算法中的插入排序為例,介紹優化演算法,編制高效程式的方法。人們通常用於排序手中橋牌的方法是一次考慮一張牌,將它插入到已經排序過的牌的適當位置中 時刻讓它們保持有序 在計算機實現中,我們需要將較大的元素移到右邊,為插入的元素準備空間,然後再在空位置上插入該元素。該演算法的通常的乙個實現如...

delegate 委託一例

using system using system.collections.generic using system.linq using system.text namespace consoletest public static void englishgreeting string snam...