两个地方:
(1)避免惊群:也就是换取的时候请用pthread_cond_sign而不是pthread_cond_broadcast
(2)醒来之后要测试条件是否成立,如果不成立,就要继续休眠。原因有两个:
- 其他线程可能会改变这个条件
- 有可能虚假唤醒。在一些多处理器系统上,为了确保高效实现而导致虚假唤醒
两个地方:
(1)避免惊群:也就是换取的时候请用pthread_cond_sign而不是pthread_cond_broadcast
(2)醒来之后要测试条件是否成立,如果不成立,就要继续休眠。原因有两个: