condition_variable.wait的用法与作用
时间: 2023-10-05 17:13:02 浏览: 166
C++11中的mutex, lock, condition variable实现分析
5星 · 资源好评率100%
`condition_variable.wait(lock)` 是 C++11 中用于多线程编程的一个函数,它的作用是在等待某个条件变量的通知,并且在等待期间自动释放锁,以避免浪费 CPU 资源。
`condition_variable.wait(lock)` 的具体用法如下:
1. 首先通过一个互斥量 `lock` 来保护共享资源;
2. 然后定义一个条件变量 `cond_var`,并在等待期间通过 `cond_var.wait(lock)` 来等待条件变量的通知;
3. 在等待期间,当前线程将自动释放 `lock`,并进入休眠状态等待条件变量的通知;
4. 当其他线程修改了共享资源,并且满足了某个条件时,可以通过 `cond_var.notify_one()` 或者 `cond_var.notify_all()` 来通知等待的线程;
5. 被通知的线程将重新获取 `lock`,并继续执行后续操作。
这种等待条件变量的方式可以避免线程的忙等待,节省了 CPU 资源,并且能够保证线程之间的同步。
阅读全文