global variable 'temp';
**threadA**
-pthread_mutex_lock-
if (temp == 'x')
-pthread_cond_wait-
do this
-pthread_mutex_unlock-
**threadB**
-pthread_mutex_lock-
if (someCondition == true)
temp = 'x'
-pthread_cond_signal-
-pthread_mutex_unlock-
在我的情况下,我可能没有任何循环,我只是有一个if条件。所以,我希望当temp =='x'时,那么threadA应该这样做/ this。
pthread_cond_wait
时,循环是强制性的吗? 答案 0 :(得分:7)
循环是强制性的,因为根据http://pubs.opengroup.org/onlinepubs/009695399/functions/pthread_cond_wait.html:
可能会发生pthread_cond_timedwait()或pthread_cond_wait()函数的虚假唤醒。由于从pthread_cond_timedwait()或pthread_cond_wait()返回并不意味着有关此谓词的值的任何内容,因此应在返回时重新评估谓词。