複製鏈接
請複製以下鏈接發送給好友

條件變量

鎖定
Linux下C編程的條件變量:
條件變量是線程中的東西,就是等待某一條件的發生,和信號一樣。
中文名
條件變量
定    義
線程中的東西
類    型
pthread_cond_t
創建方式
靜態和動態

目錄

條件變量用法

條件變量使我們可以睡眠等待某種條件出現。
條件變量是利用線程間共享的全局變量進行同步的一種機制,主要包括兩個動作:一個線程等待"條件變量的條件成立"而掛起;另一個線程使"條件成立"(給出條件成立信號)。為了防止競爭,條件變量的使用總是和一個互斥鎖結合在一起。
條件變量類型為 pthread_cond_t

條件變量創建

條件變量和互斥鎖一樣,都有靜態和動態兩種創建方式,靜態方式使用PTHREAD_COND_INITIALIZER常量進行初始化,如下:
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
動態方式調用pthread_cond_init()函數,API定義如下:
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