wait与条件变量

Condition为什么要与mutex配合呢?
一般编程中都需要判断一个条件才去等待,在判断条件和等待中间有一个时间间隔,这期间是不安全的,需要加锁。而等待阻塞以后需要把锁释放,在被唤醒以后需要重新获取锁。

很多C++库会封装Thread的wait方法,或者单独封装一个Condition类。从而实现等待功能。
Condition需要和mutex配合才能完成工作。好多库的封装者们不明白这一点,将wait中的mutex参数忽略掉。
几乎大部分C++库都有这个错误,这可能是由于早期Windows没有Condition的概念有关(WindowsXP和2003不支持Condition,但是可以通过其他机制模拟实现)。
所以一个C++线程库封装的好坏就看wait方法有没有锁参数(或者像java一样间接暴露锁)。

你可能感兴趣的:(wait与条件变量)