boost---condition_variable条件变量使用详解

1、条件变量是一种用于等待的同步机制,可以实现线程间通信,它必须与互斥量配合使用。

2、boost::thread提供的两种条件变量对象:(1)、condition_variable;(2)、condition_variable_any。他们的区别是:(1)、condition_variable只能配合boost::mutex互斥量;(2)、condition_variable_any可以适应更广泛的互斥量类型。

3、wait_for(lock_type& lock)函数的执行流程:阻塞当前线程,内部自动调用lock.unlock()解锁互斥锁,释放对锁的所有权,当收到其它线程notify_one()或是notify_all()的通知时,再次重新获取互斥锁的使用权(lock.lock()),执行当前线程工作。wait(lock_type& lock, predicate_type predicate)条件等待函数执行流程:只有在参数2中的predicate返回为false的时候才会阻塞线程,并释放锁,当收到其它线程notify_one()或是notify_all()的通知时,”并且”参数2中的predicate返回为true时才能解除阻塞,并占用锁的使用权。

4、其它的等待函数是这两个等待函数的拓展,只是加了一个时间点或是时间段。

5、主要接口如下:

相关推荐
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值