目录
1 前言
为了更好的理解条件变量是什么,我们还是应当先思考一下为什么需要条件变量,还是先以一段程序为例:
using namespace std;
class MsgList //模拟消息的写入和读取
{
public:
void MsgWrite()
{
for (int i = 0; i < 10000; i++) //写入1000条消息,用i来模拟消息
{
lock_guard<mutex> guard(m);
msgQue.push_back(i);
cout << "Write Message : " << i << endl;
}
}
void MsgRead()
{
while (true) //用死循环来循环判断消息列表中是否有消息,如果有的话就将其读出
{
if (!msgQue.empty())
{
lock_guard<mutex> guard(m);
cout << "Read Message : " << msgQue.front() << endl; //读取最先来临的消息
msgQue.pop_front(); //将已读消息删除
}
else
{
lock_guard<mutex> guard(m); //这里加锁是为了保证cout输出完整
cout << "There is no Message !" << endl;
}
}
}
private:
deque<int> msgQue; //消息队列
mutex m; //互斥锁
};
int main()
{
MsgList myMsg;