Linux 執行緒同步 條件變數

2021-08-26 18:20:24 字數 789 閱讀 4817

pthread_cond_signal 使在條件變數上等待的執行緒中的乙個執行緒重新開始。如果沒有等待的執行緒,則什麼也不做。如果有多個執行緒在等待該條件,只有乙個能重啟動,但不能指定哪乙個。

pthread_cond_broadcast 重啟動等待該條件變數的所有執行緒。如果沒有等待的執行緒,則什麼也不做。

pthread_cond_wait 自動解鎖互斥量(如同執行了 pthread_unlock_mutex),並等待條件變數觸發。這時執行緒掛起,不占用 cpu 時間,直到條件變數被觸發。在呼叫 pthread_cond_wait 之前,應用程式必須加鎖互斥量。pthread_cond_wait 函式返回前,自動重新對互斥量加鎖(如同執行了 pthread_lock_mutex)。pthread_cond_timedwait 和 pthread_cond_wait 一樣,自動解鎖互斥量及等待條件變數,但它還限定了等待時間。如果在 abstime 指定的時間內 cond 未觸發,互斥量 mutex 被重新加鎖,且 pthread_cond_timedwait 返回錯誤 etimedout。abstime 引數指定乙個絕對時間,時間原點與 time 和 gettimeofday 相同:abstime = 0 表示 1970 年 1 月 1 日 00:00:00 gmt。

pthread_cond_destroy 銷毀乙個條件變數,釋放它擁有的資源。進入 pthread_cond_destroy 之前,必須沒有在該條件變數上等待的執行緒。在 linuxthreads 的實現中,條件變數不聯結資源,除檢查有沒有等待的執行緒外,pthread_cond_destroy 實際上什麼也不做。

Linux執行緒同步 條件變數

執行緒間的同步還有乙個情況 程序a 需要等待乙個條件成立,才執行,當條件不成立時就阻塞等待 程序b 需要設定條件,當條件成立時,喚醒程序a.這裡我們就可以用到條件變數。條件變數變數也是出自posix執行緒標準,另一種執行緒同步機制,主要用來等待某個條件的發生,然後進行相應的操作,這樣可以消除多執行緒...

Linux執行緒同步之條件變數

與互斥鎖不同,條件變數是用來等待而不是用來上鎖的。條件變數用來自動阻塞乙個執行緒,直到某特殊情況發生為止。通常條件變數和互斥鎖同時使用。條件變數使我們可以睡眠等待某種條件出現。條件變數是利用執行緒間共享的全域性變數進行同步的一種機制,主要包括兩個動作 乙個執行緒等待 條件變數的條件成立 而掛起 另乙...

Linux執行緒同步之 條件變數

條件變數是執行緒可用的另一種同步機制。條件變數給多執行緒提供了乙個會合的場所。它主要包括兩個動作 乙個執行緒等待 條件變數的條件成立 而掛起 另乙個執行緒使 條件成立 給出條件成立訊號 條件變數與互斥量一起使用時,允許執行緒以無競爭的方式等待特定的條件發生。條件變數本身是互斥量保護的。執行緒在改變條...