std::condition_variable
是C++标准库中的一个线程同步原语,用于实现线程间的条件变量通信。下面简要讲解其用法。
首先,使用std::condition_variable
之前,需要包含头文件<condition_variable>。
创建
std::condition_variable
对象
可以通过以下方式创建std::condition_variable
对象:std::condition_variable cv;
创建
std::mutex
对象std::condition_variable
需要与std::mutex
配合使用,用于保护共享数据的访问。std::mutex mtx;
等待条件满足
在某个线程中,可以通过调用std::condition_variable
的wait()
成员函数来等待条件满足。wait()
函数会自动释放锁,并使线程进入等待状态,直到其他线程调用notify_one()
或notify_all()
函数来唤醒等待的线程。std::unique_lock<std::mutex> lock(mtx); cv.wait(lock); // 等待条件满足
唤醒等待的线程
在另一个线程中,可以通过调用std::condition_variable
的notify_one()
或notify_all()
成员函数来唤醒等待的线程。notify_one()
函数会唤醒至少一个等待的线程,而notify_all()
函数会唤醒所有等待的线程。cv.notify_one(); // 唤醒至少一个等待的线程 // 或 cv.notify_all(); // 唤醒所有等待的线程
条件满足时通知等待的线程
在某个线程中,当条件满足时,可以通过调用std::condition_variable
的notify_one()
或notify_all()
函数来通知等待的线程。std::unique_lock<std::mutex> lock(mtx); // 满足条件后,通知等待的线程 cv.notify_one();
注意: 在使用std::condition_variable
时,通常需要结合std::unique_lock<std::mutex>
来进行锁的管理,以确保线程安全。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。