#include <deque>
#include <thread>
#include <mutex>
#include <condition_variable>
using namespace std;

deque<int> queue;
mutex mtx;
condition_variable cond;

void dequeue()
{
    //1.必须与mutex一起使用
    //2.mutex已上锁的时候才能调用wait()
    //3.把bool条件判断放到while中

    unique_lock<mutex> lock(mtx);
    while(queue.empty())
    {
        cond.wait(lock);//会解锁,并等待
        //wait执行完毕自动重新加锁
    }    
    queue.pop_front();
}

void enqueue()
{
    unique_lock<mutex> lock(mtx);
    queue.push_back(1);
    cond.notify_one();
}

//int main()
//{
//    thread th1(dequeue);
//    thread th2(enqueue);
//
//    th1.join();
//    th2.join();
//    return 0;
//}

 

相关文章:

  • 2021-07-28
  • 2021-12-28
  • 2021-11-10
  • 2021-11-29
  • 2022-01-18
  • 2022-01-30
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-08-13
相关资源
相似解决方案