Multithreading pthread_cond_不带while循环等待

Multithreading pthread_cond_不带while循环等待,multithreading,pthreads,mutex,condition-variable,Multithreading,Pthreads,Mutex,Condition Variable,在我的例子中,我可能没有任何循环,我只有一个if条件。所以,我希望当temp='x'时,threadA应该这样做 在处理pthread\u cond\u wait时,循环是强制的吗 如果不需要循环,那么编写代码的另一种方法是什么 这是编写代码的正确方法吗 循环是强制性的,因为根据: 可能会发生pthread_cond_timedwait()或pthread_cond_wait()函数的虚假唤醒。由于pthread_cond_timedwait()或pthread_cond_wait()的返回并

在我的例子中,我可能没有任何循环,我只有一个if条件。所以,我希望当temp='x'时,threadA应该这样做

  • 在处理
    pthread\u cond\u wait
    时,循环是强制的吗
  • 如果不需要循环,那么编写代码的另一种方法是什么
  • 这是编写代码的正确方法吗

循环是强制性的,因为根据:

可能会发生pthread_cond_timedwait()或pthread_cond_wait()函数的虚假唤醒。由于pthread_cond_timedwait()或pthread_cond_wait()的返回并不意味着与此谓词的值有关的任何内容,因此应在此类返回时重新计算谓词


“可能会发生pthread_cond_timedwait()或pthread_cond_wait()函数的虚假唤醒。”这是否意味着唤醒可能会在没有任何原因的情况下自动发生?是的,这是标准所说的-特定实现可能会选择实现更严格的语义。
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-