在多线程编程中,条件变量是一种重要的同步机制,它允许线程等待某个特定条件的发生,从而实现线程间的协作。C++标准库提供了condition_variable类来支持条件变量的使用。
条件变量的使用一般需要和互斥量(mutex)一起配合使用,以保证线程安全。互斥量用来保护共享数据,条件变量则用来等待特定条件的发生。
下面是一个简单的例子,演示了如何使用条件变量来实现线程的等待和唤醒操作。
#include <iostream>
#include <thread>
#include <mutex>
#include <condition_variable>
std::mutex mtx;
std::condition_variable cv;
bool flag = false;
void worker_thread()
{
// 等待条件变量
std::unique_lock<std::mutex> lk(mtx);
cv.wait(lk, []{ return flag; });
// 条件满足,执行任务
std::cout << "Worker thread is running" << std::endl;
}
int main()
{
// 创建工作线程
std::thread worker(worker_thread);