c++ 条件变量的wait函数
时间: 2024-10-23 21:10:23 浏览: 23
在C++中,条件变量(`std::condition_variable`)是`<mutex>`头文件中的一个成员,它通常与互斥锁(`std::mutex`)一起使用,用于线程间的同步。`std::condition_variable`主要用于在等待某个条件满足时让线程进入睡眠状态,而当这个条件变为真时,唤醒并允许线程继续执行。
`wait()`函数是`std::condition_variable`的一个主要操作,它的签名通常是这样的:
```cpp
void wait(std::unique_lock<std::mutex>& lock);
```
或
```cpp
template <class Duration>
future_type wait_for(const std::shared_future<typename enable_if<
is_convertible<Duration, std::chrono::duration>::value>::type&> pred,
Duration timeout);
```
这里的`lock`参数代表了对互斥锁的引用,确保在等待期间其他线程无法修改共享资源。当你调用`wait(lock)`时,当前线程会释放锁,然后进入等待状态,直到被另一个持有相同锁的线程通过`notify_one()`或`notify_all()`唤醒。
如果你传入的是第二个版本的`wait_for(pred, timeout)`,那么线程会在`pred`返回为真或`timeout`时间到期(以较早者为准)时醒来。
阅读全文