程式如下:建立條件:int pthread_cond_init(pthread_cond_t *cv,
const pthread_condattr_t *cattr);
返回值:函式成功返回0;任何其他返回值都表示錯誤等待條件:int pthread_cond_wait(pthread_cond_t *cv,
pthread_mutex_t *mutex);
返回值:函式成功返回0;任何其他返回值都表示錯誤
觸發條件:
int pthread_cond_signal(pthread_cond_t *cv);
返回值:函式成功返回0;任何其他返回值都表示錯誤
銷毀條件:
int pthread_cond_destroy(pthread_cond_t *cv);
返回值:函式成功返回0;任何其他返回值都表示錯誤
#include執行結果:#include
pthread_mutex_t mutex;
int g_data = 0;
pthread_cond_t cond;
void *func1(void *arm)
}void *func2(void *arm)
pthread_mutex_unlock(&mutex);
sleep(1);}}
int main()
ret = pthread_create(&t2,null,func2,(void *)&pram);
if(ret == 0)
printf("main:%ld\n",(unsigned long)pthread_self());
pthread_join(t1,null);
pthread_join(t2,null);
pthread_mutex_destroy(&mutex);
pthread_cond_destroy(&cond); //條件銷毀
return 0;
}
main:140059308766976t1:140059300480768 this is creat
t1:pram is 100
t2:140059292088064 this is creat
t2:pram is 100
t2 :0
t2 :1
t2 :2
ti run***************=
t1 :3
t2 :0
t2 :1
t2 :2
ti run***************=
t1 :3
t2 :0
^c
執行緒條件控制實現執行緒的同步
與條件變數相關api 條件變數是執行緒另一可用的同步機制。條件變數給多個執行緒提供了乙個會合的場所。條件變數與互斥量一起使用時,允許執行緒以無競爭的方式等待特定的條件發生。條件本身是由互斥量保護的。執行緒在改變條件狀態前必須首先鎖住互斥量,其他執行緒在獲得互斥量之前不會察覺到這種改變,因為必須鎖定互...
linux 執行緒 條件變數
與互斥鎖不同,條件變數是用來等待而不是用來上鎖的。條件變數用來自動阻塞乙個執行緒,直到某特殊情況發生為止。條件變數使我們可以睡眠等待某種條件出現。條件變數是利用執行緒間共享的全域性變數進行同步的一種機制,主要包括兩個動作 乙個執行緒等待 條件變數的條件成立 而掛起 另乙個執行緒使 條件成立 給出條件...
linux 執行緒 條件變數
條件變數本身不是鎖!但它也可以造成執行緒阻塞。通常與互斥鎖配合使用。給多執行緒提供乙個會合的場所 共享的資料 主要應用函式 pthread cond init函式 pthread cond destroy函式 pthread cond wait函式 pthread cond timedwait函式 ...