Advertisement

[C++ 条件变量(C++11版本)]

阅读量:

条件变量

C++11 引入了条件变量这一机制,用以完成线程之间的同步任务,其使用需包含头文件#include <condition_variable>,并且通常需要与互斥量 mutex 联合应用。

条件变量的运作流程如下:

  • 当某线程使用条件变量时,首先会对对应的互斥量进行加锁操作
  • 然后对该线程所关注的特定条件进行判断,若该条件未达成,则释放当前持有的互斥量并进入等待状态;反之,若条件已满足,则继续执行相应的资源处理任务,并在完成操作后释放互斥量
  • 在此期间,另一条线程将对互斥量进行加锁,并执行相关资源处理操作,在确保条件成立之后释放互斥量,从而激活处于等待状态的线程

具体信息可参见:std::condition_variable

成员函数

  • wait ——当特定条件未达成时,该机制将释放互斥量并进入休眠状态,待被唤醒后再次尝试获取锁并进行判断;若条件满足,则继续执行后续操作。此过程中,互斥量的管理需通过unique_lock对象实现。
    该函数包含两种形式的定义
复制代码
    void wait(unique_lock<mutex>& __lock)	// 

全部评论 (0)

还没有任何评论哟~