C++中的condition_variable是一种线程同步机制,用于在多线程环境下实现线程间的通信和协调。它通常与unique_lock一起使用,用于实现线程的等待和唤醒操作。
下面是一个使用C++ condition_variable的例子,其中线程A等待线程B的通知后进行响应:
#include <iostream>
#include <thread>
#include <condition_variable>
std::condition_variable cv;
std::mutex mtx;
bool isNotified = false;
void threadB()
{
std::this_thread::sleep_for(std::chrono::seconds(2)); // 模拟线程B的一些操作
{
std::lock_guard<std::mutex> lock(mtx);
isNotified = true;
}
cv.notify_one(); // 通知等待的线程A
}
void threadA()
{
std::unique_lock<std::mutex> lock(mtx);
cv.wait(lock, []{ return isNotified; }); // 等待线程B的通知
std::cout << "线程A收到了线程B的通知并进行了响应" << std::endl;
}
int main()
{
std::thread t1(threadA);
std::thread t2(threadB);
t1.join();
t2.join();
return 0;
}
在上述例子中,线程A通过调用cv.wait()等待线程B的通知。线程B在一些操作后,通过设置isNotified为true,并调用cv.notify_one()来通知等待的线程A。一旦线程B通知了线程A,线程A将被唤醒并继续执行。
这个例子展示了如何使用C++ condition_variable实现线程间的通信和协调,确保线程A在接收到线程B的通知后进行响应。
腾讯云相关产品和产品介绍链接地址:
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云