当前位置: 首页 > news >正文

阿升网站免费学设计友情链接是什么

阿升网站免费学设计,友情链接是什么,潍坊网站建设套餐,网站建设实训报告要求目录 1、condition_variable1.1、生产者消费者模型1.2、改变共享变量的线程步骤1.3、等待信号读取共享变量的线程步骤1.3.1、获得改变共享变量线程共同的mutex1.3.2、wait()等待信号通知1.3.2.1、无lambda表达式1.3.2.2 lambda表达式 样例代码 1、condition_variable 等待中&a…

目录

    • 1、condition_variable
      • 1.1、生产者消费者模型
      • 1.2、改变共享变量的线程步骤
      • 1.3、等待信号读取共享变量的线程步骤
        • 1.3.1、获得改变共享变量线程共同的mutex
        • 1.3.2、wait()等待信号通知
          • 1.3.2.1、无lambda表达式
          • 1.3.2.2 lambda表达式
      • 样例代码

1、condition_variable

等待中,增加了时延和开销,用条件变量就很快及时处理

1.1、生产者消费者模型

生产者和消费者共享资源变量(list队列);
生产者生产一个产品,通知消费者消费;
消费者阻塞等待信号,获取信号后消费产品(取出list队列中数据)

1.2、改变共享变量的线程步骤

准备好信号量

std::condition_variable cv;

1、获取std::mutex(常用std::unique_lock)

unique_lock lock(mux);

2、在获取锁时进行修改;

msgs_.push_back(data);

3、释放锁并通知读取线程

lock.unlock();
cv.notify_one();//通知一个等待信号线程
cv.notify_all;//通知所有等待信号线程

1.3、等待信号读取共享变量的线程步骤

1.3.1、获得改变共享变量线程共同的mutex

unique_lock lock(mux);

1.3.2、wait()等待信号通知

1.3.2.1、无lambda表达式
//解锁lock,并阻塞等待notify_one notify_all 通知
cv.wait(lock);//接收到通知会再次获取锁标注,也就是说如果此时mux资源被占用,wait函数会阻塞
msgs_front();
//处理数据
msgs_pop_front();
1.3.2.2 lambda表达式
cv.wait(lock,[]{return !msgs_empty();})

只在std::unique_lockstd::mutex上工作的std::condition_variable

在这里插入图片描述

样例代码

#include <thread>
#include <iostream>
#include <mutex>
#include <list>
#include <string>
#include <sstream>using namespace std;
list<string> msgs_;
mutex mux;
condition_variable cv;//条件变量void ThreadWrite()
{for (int i = 0;;i++){stringstream ss;ss << "Write msg " << i;unique_lock<mutex> lock(mux);msgs_.push_back(ss.str());lock.unlock();//解锁cv.notify_one();//通知一个this_thread::sleep_for(1ms);}
}
void ThreadRead(int i)
{for (;;){cout << "Read msg" << endl;unique_lock<mutex> lock(mux);cv.wait(lock);//解锁、阻塞等待信号mambda表达式方式//cv.wait(lock, [i]//{//	cout << i << " wait" << endl;//特别这句话在啥时候会进入,调用多少次,搞不清楚就用上面cv.wait更简单//	//return true;//只要返回true,wait就不会阻塞//	return !msgs_.empty();//	//	});//获取信号后锁定while (!msgs_.empty()){cout << i << "read " << msgs_.front() << endl;msgs_.pop_front();}if (msgs_.empty()) return;}
}int main()
{thread th(ThreadWrite);th.detach();for (int i = 0; i < 3; i++){//读取线程thread th2(ThreadRead,i+1);th2.detach();}getchar();return 0;
}

在这里插入图片描述

期间出差了一个月,没有时间学习,今天开始又继续学习和做笔记了…
辉2023.9.8

http://www.khdw.cn/news/31445.html

相关文章:

  • 网站关键词效果追踪怎么做seo优化诊断
  • wordpress美女图片站采集杭州网络优化公司排名
  • wordpress多站点多模板近一周新闻热点事件
  • 个人如何做网站推广贴吧友情链接在哪
  • 怀化公司做网站seo sem推广
  • 优秀企业网站首页app投放推广
  • 网络维护工作总结seo去哪里培训
  • 广告联盟没有网站怎么做苏州网站建设费用
  • 高端网站设计公司如何设计网站seo快速排名培训
  • 定制网站哪家好百度网络推广营销
  • 网站出现500网站seo排名优化
  • 网站建设越来越注重用户体验网站域名查询工具
  • 品牌的佛山网站建设价格批量外链工具
  • 做咨询类网站风险评估公司官网模板
  • 做网站的企业排名seo视频教程百度网盘
  • 如何分析一个网站苏州搜索引擎优化
  • html的网站模板苏州seo门户网
  • 太原顶呱呱做网站地址电话长沙seo服务
  • 安米网在线app制作厦门seo优化公司
  • 手机网站规格网络营销推广难做吗
  • 东莞seo排名公司黑帽seo优化推广
  • 专业英文网站制作百度软件中心下载安装
  • 网站怎么做seo步骤个人网站制作模板
  • 做好网站建设静态化北京网站优化怎么样
  • wordpress示例页面删除aso优化{ }贴吧
  • 经济网站建设网络营销成功案例有哪些2022
  • 汽车之家如何做团购网站赚钱软件
  • asp.net网站建设百度网址大全首页
  • 旅游小镇网站建设方案今日中国新闻
  • 十大营销网站seo建站优化