Boost库中的condition_variable是一个重要的线程同步工具,它允许一个或多个线程在某些条件得到满足后再进行操作。本文将介绍如何使用Boost库来实现一个简单的条件变量测试程序。
首先,需要引入Boost库的头文件和命名空间:
#include <boost/thread.hpp>
#include <iostream>
using namespace boost;
using namespace std;
接下来,定义一个共享变量flag和一个互斥体mutex:
int flag = 0;
boost::mutex mutex;
然后,定义一个生产者线程函数producer,该函数会不断地将flag设置为1,并通知等待在条件变量上的消费者线程:
void producer() {
while (true) {
{
boost::lock_guard<boost::mutex> lock(mutex);
flag = 1;
cout << "Producer set flag to 1." << endl;
}
cv.notify_all();
boost::this_thread::sleep(boost::po