假設某個條件變量「cond」與一個互斥變量「mutex」關聯。如果一個線程在調用pthread_cond_wait(&cond,&mutex)
之後正在睡眠cond
,並且鎖定的另一個線程完成鎖定,那麼在調用pthread_mutex_unlock(&mutex)
之前還是之後,該線程調用pthread_cond_signal(&cond)
是否有關係?如果它調用pthread_cond_signal(&cond)
,它甚至需要解鎖互斥鎖,因爲睡眠線程無論如何都會獲取互斥鎖?發送條件變量(pthreads)
編輯:根據https://computing.llnl.gov/tutorials/pthreads/#ConVarOverview,「在調用pthread_cond_signal()後未能解鎖互斥鎖可能無法完成匹配的pthread_cond_wait()例程(它將保持阻塞狀態)。」我想那時候,解鎖,也許只有在之後,纔是必需的。
+1回答你自己的問題。 – 2011-03-03 01:44:46