C++11(六) 条件变量(condition_variable)

本文介绍了C++11中的条件变量,一种用于线程同步的机制。条件变量通常与互斥量结合使用,确保线程安全。文章详细讲解了`condition_variable`和`condition_variable_any`的区别,并提供了示例代码展示如何使用`wait`、`notify_one`和`notify_all`函数。还提及了Linux环境下条件变量的相关函数。
摘要由CSDN通过智能技术生成

前面提到了线程,那么肯定就要说到条件变量。

条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待

条件变量的条件成立而挂起;另一个线程使条件成立(给出条件成立信号)。为了防止竞争,条件变

量的使用总是和一个互斥量结合在一起。

头文件<condition_variable>

  • condition_variable

  • ​condition_variable_any

相同点:两者都能与std::mutex一起使用。

不同点:前者仅限于与 std::mutex  一起工作,而后者可以和任何满足最低标准的互斥量一

起工作,从而加上了_any的后缀。condition_variable_any会产生额外的开销。

一般只推荐使用condition_variable。除非对灵活性有硬性要求,才会考虑condition_variable_any。

条件变量的构造函数:

std::condition_variable::condition_variable
constructor:
    condition_variable();   //默认构造函数无参
    condition_variable(const condition_variable&) = delete;   //删除拷贝构造函数

条件变量的wait函数:

void wait( std::unique_lock<std::mutex>& lock );
//Predicate是lambda表达式。
template< class Predicate >
void wait( std::unique_lock<std::mute
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值