設想一個條件變量線程塊:可以在pthread_cond_wait()解除阻止之前解鎖pthread_mutex_lock()嗎?
pthread_mutex_lock (mutex);
do_something();
pthread_cond_wait(cond, mutex); // [1]
do_something_else();
pthread_mutex_unlock (mutex);
互斥量被釋放,並在不同的線程試圖鎖定互斥暢通:
pthread_mutex_lock (mutex);
do_some_work();
pthread_cond_signal (cond);
pthread_mutex_unlock (mutex);
同時還有另一個線程等待獲得臨界區的所有權:
pthread_mutex_lock (mutex); // [2]
do_some_random_work();
pthread_mutex_unlock (mutex);
現在的問題是:當調用pthread_cond_signal()被調用,它是保證pthread_cond_wait()[1]將在pthread_mutex_lock()[2]之前解除阻塞?
POSIX規範似乎沒有提到這種情況。
+1我的想法正好。 – Tudor