condition

复制代码
#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;
//}
复制代码

 

posted @   zzyoucan  阅读(186)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2019-12-26 设置套接字选项
点击右上角即可分享
微信分享提示