在C++的多线程编程中,除了互斥量以外,条件变量也是一个非常重要的同步原语。它常常和互斥量一起使用,用于实现更复杂的同步机制。在本文中,我将详细介绍如何在C++中使用条件变量。
1. 什么是条件变量?
条件变量是一种同步原语,它可以让一个线程等待直到某个特定条件满足为止。线程可以使用条件变量的wait
方法来等待,而其他线程可以通过调用notify_one
或notify_all
方法来唤醒等待的线程。
2. C++中的条件变量
C++通过std::condition_variable
类来提供条件变量的功能,它定义在<condition_variable>
头文件中。std::condition_variable
提供了wait
、notify_one
和notify_all
等成员函数。
以下是一个简单的例子:
#include <iostream>
#include <thread>
#include <mutex>
#include <condition_variable>
std::mutex mtx;
std::condition_variable cv;
bool ready = false;
void print_id(int id) {
std::unique_lock<std::mutex> lock(mtx);
while (!ready) {
cv.wait(lock);
}
std::cout << "thread "