描述

在使用条件变量时,有可能pthread_cond_wait返回时,条件并不满足

原因

  • 在多核CPU上无法完全实现条件操作语义

如何避免

1
2
3
4
5
pthread_mutex_lock(&lock);
while (condition_is_false) {
pthread_cond_wait(&cond, &lock);
}
pthread_mutex_unlock(&lock);

参考

  1. http://www.fenesky.com/blog/2014/06/22/cond-spurious-wakeup.html

留言

2015-08-17