[C++ 条件变量(C++11版本)]
发布时间
阅读量:
阅读量
条件变量
C++11 引入了条件变量这一机制,用以完成线程之间的同步任务,其使用需包含头文件#include <condition_variable>,并且通常需要与互斥量 mutex 联合应用。
条件变量的运作流程如下:
- 当某线程使用条件变量时,首先会对对应的互斥量进行加锁操作
- 然后对该线程所关注的特定条件进行判断,若该条件未达成,则释放当前持有的互斥量并进入等待状态;反之,若条件已满足,则继续执行相应的资源处理任务,并在完成操作后释放互斥量
- 在此期间,另一条线程将对互斥量进行加锁,并执行相关资源处理操作,在确保条件成立之后释放互斥量,从而激活处于等待状态的线程
具体信息可参见:std::condition_variable
成员函数
wait——当特定条件未达成时,该机制将释放互斥量并进入休眠状态,待被唤醒后再次尝试获取锁并进行判断;若条件满足,则继续执行后续操作。此过程中,互斥量的管理需通过unique_lock对象实现。
该函数包含两种形式的定义
void wait(unique_lock<mutex>& __lock) //
全部评论 (0)
还没有任何评论哟~
