條件變數

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 <pthread.h>

相關詞條

熱門詞條

聯絡我們