admin管理员组

文章数量:1599543

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、其它的等待函数是这两个等待函数的拓展,只是加了一个时间点或是时间段。</

本文标签: 变量详解条件boostconditionvariable