cond條件變數 阿新 • • 發佈:2019-02-06 這個是我搜集的一些相關資料 條件變數是執行緒中的東西,就是等待某一條件的發生,和訊號一樣。 用法 編輯 條件變數使我們可以睡眠等待某種條件出現。 條件變數是利用執行緒間共享的全域性變數進行同步的一種機制,主要包括兩個動作:一個執行緒等待"條件變數的條件成立"而掛起;另一個執行緒使"條件成立"(給出條件成立訊號)。為了防止競爭,條件變數的使用總是和一個互斥鎖結合在一起。 條件變數型別為 pthread_cond_t。 建立 編輯 條件變數和互斥鎖一樣,都有靜態和動態兩種建立方式,靜態方式使用PTHREAD_COND_INITIALIZER常量進行初始化,如下: pthread_cond_t cond = PTHREAD_COND_INITIALIZER; int pthread_cond_init(pthread_cond_t *cond, pthread_condattr_t *cond_attr) 儘管POSIX標準中為條件變數定義了屬性,但在LinuxThreads中沒有實現,因此cond_attr值通常為NULL,且被忽略。 登出 編輯 登出一個條件變數需要呼叫pthread_cond_destroy(),只有在沒有執行緒在該條件變數上等待的時候,才能登出這個條件變數,否則返回EBUSY。API定義如下: int pthread_cond_destroy(pthread_cond_t *cond) 注:標頭檔案為#include <pthread.h>