Rav*_*avi 2 c multithreading pthreads
我见过使用pthread_cond_wait的典型模式是:
pthread_mutex_lock(&lock);
while (!test)
pthread_cond_wait(&condition, &lock);
pthread_mutex_unlock(&lock);
Run Code Online (Sandbox Code Playgroud)
为什么不能使用if语句而不是while循环.
pthread_mutex_lock(&lock);
if (!test)
pthread_cond_wait(&condition, &lock);
pthread_mutex_unlock(&lock);
Run Code Online (Sandbox Code Playgroud)
http://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_cond_timedwait.html
使用条件变量时,总会有一个布尔谓词,涉及与每个条件等待关联的共享变量,如果线程应该继续,则为真.可能会发生pthread_cond_timedwait()或pthread_cond_wait()函数的虚假唤醒.由于从pthread_cond_timedwait()或pthread_cond_wait()返回并不意味着有关此谓词的值的任何内容,因此应在返回时重新评估谓词.
根据while
POSIX的要求,循环是一种非常标准的重新评估谓词的方法.
归档时间: |
|
查看次数: |
1701 次 |
最近记录: |