Linux執行緒條件控制

2021-10-24 17:02:53 字數 1556 閱讀 8904

建立條件:

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:140059308766976

t1: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函式 ...