Quoting POSIX:可以假定``pthread_cond_signal``會以條件變量的互斥鍵的方式自動喚醒信號線程?
的
pthread_cond_broadcast()
或pthread_cond_signal()
功能可以由一個線程它是否當前擁有那個線程調用pthread_cond_wait()
或pthread_cond_timedwait()
已經與在其等待狀態變量相關聯的互斥被調用;然而,如果需要可預測的調度行爲,那麼該互斥量將被調用pthread_cond_broadcast()
或pthread_cond_signal()
的線程鎖定。
「如果可預測的調度行爲是必需的」。這可能/會暗示在調用pthread_cond_signal()
之前鎖定綁定到條件變量的互斥鎖應確保在任何其他線程設法鎖定此互斥鎖之前喚醒信號線程。它是否正確?
我推薦這裏的官方Linux手冊頁:http://man7.org/linux/man-pages/man3/pthread_cond_signal.3p.html – alk