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

1.6.3 条件变量通知

pthread_cond_signal函数的作用是发送一个信号给另外一个正处于阻塞状态的线程,使其从阻塞状态中醒过来继续执行,条件变量通知函数如代码清单1-19所示。如果没有线程处于阻塞等待状态,则pthread_cond_signal也会成功返回。

代码清单1-19 条件变量通知函数

pthread_cond_signal函数只会给一个线程发送信号,如果有多个线程正在阻塞等待同一个条件变量,会优先通知高优先级的线程执行。如果各等待线程优先级相同,则根据等待时间的长短来确定由哪个线程执行。pthread_cond_broadcast函数会唤醒等待在同一条件变量上的所有线程,但由于唤醒后最终只有一个线程能获取到锁,所以最终仍只有一个线程能立即执行。pthread_cond_signal函数相当于Java的Object.notifyAll()功能。