一本书讲透Java线程:原理与实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.6.2 条件变量等待

pthread_cond_wait函数用于阻塞当前线程,等待其他的线程调用pthread_cond_signal函数或pthread_cond_broadcast函数来唤醒它。pthread_cond_wait函数必须与pthread_mutex配套使用,在调用pthread_cond_wait函数之前必须先通过pthread_mutex_lock函数拿到互斥量的锁对象。pthread_cond_wait函数一进入wait状态就会自动释放mutex。当其他线程通过通知将该线程唤醒时,pthread_cond_wait函数又自动获得互斥量的锁对象。条件变量等待函数如代码清单1-18所示。

代码清单1-18 条件变量等待函数

pthread_cond_timedwait函数可以设定等待时间abstime,系统会按照abstime来设置一个高精度的定时器,时间到了定时器会自动触发通知,唤醒等待的线程。