#include
#include
#include
"stdlib.h"
#include
"unistd.h"
pthread_mutex_t mutex;
pthread_cond_t cond;
void
unlock
(void
* in)
void
*thread1
(void
*in)
/*與pthread_cleanup_push(unlock, &mutex)成對出現,**一定要在同級下**,
當執行緒異常退出(包括走到取消點退出時,會呼叫hander函式釋放資源)*/
pthread_cleanup_pop(0
);}void
*thread2
(void
*in)
pthread_cleanup_pop(0
);}void
*thread3
(void
*in)
pthread_cleanup_pop(0
);}int
main()
pthread_cond_signal
(&cond);}
;sleep(2
);//pthread_exit(0);
/*pthread_join()函式會一直阻塞呼叫執行緒,直到指定的執行緒終止。當pthread_join()
返回之後,應用程式可**與已終止執行緒關聯的任何資料儲存空間。 但是,同時需要注意,
一定要和上面建立的某一線程配套使用,這樣還可以起到互斥的作用。否則多執行緒可能搶占
cpu資源,導致執行結果不確定。因此這裡thid3 join無效,執行緒一直在執行並沒有終止*/
pthread_join
(thid1,
null);
//pthread_join(thid3,null);
pthread_join
(thid2,
null);
printf
("return\n");
return0;
}
linux下執行緒同步之條件變數
以下是生產者消費者 實現 a執行緒生產產品到共享陣列,b執行緒從中消費。include include include pthread mutex t mutex pthread mutex initializer 並且初始化鎖 pthread cond t cond pthread cond in...
linux 執行緒 條件變數
與互斥鎖不同,條件變數是用來等待而不是用來上鎖的。條件變數用來自動阻塞乙個執行緒,直到某特殊情況發生為止。條件變數使我們可以睡眠等待某種條件出現。條件變數是利用執行緒間共享的全域性變數進行同步的一種機制,主要包括兩個動作 乙個執行緒等待 條件變數的條件成立 而掛起 另乙個執行緒使 條件成立 給出條件...
linux 執行緒 條件變數
條件變數本身不是鎖!但它也可以造成執行緒阻塞。通常與互斥鎖配合使用。給多執行緒提供乙個會合的場所 共享的資料 主要應用函式 pthread cond init函式 pthread cond destroy函式 pthread cond wait函式 pthread cond timedwait函式 ...