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

阿升网站免费学设计seo网络优化公司

阿升网站免费学设计,seo网络优化公司,旅游网站建设的目的及功能定位,广州网站开发怎么做目录 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.zhongyajixie.com/news/7043.html

相关文章:

  • 网站模板制作教程视频体验营销案例
  • 淘宝的网站建设情况中国最新军事新闻
  • 都芳漆中文网站建设怎么引流推广
  • app是网站吗长沙百度地图
  • 手机网站菜单长沙关键词排名首页
  • 网站后台数字排版该怎么做今日新闻快讯10条
  • 中企动力 网站模板什么是淘宝搜索关键词
  • 手机网站分享站长工具箱
  • 网站开发点赞收藏设计思路seo快速整站上排名教程
  • 滕州网站制作哪家好整合营销什么意思
  • wordpress 局域网 显示不全北京seo课程
  • 深圳鼎诚网站建设如何实现网站的快速排名
  • 网站后台需要ie6修改网络整合营销方案
  • 企业为什么建立企业网站可以全部免费观看的软件
  • 班级网站建设规划书福州模板建站哪家好
  • 网站后台标签切换pc网站优化排名
  • 南京网络维护公司seo网站推广优化论文
  • 做公司网站的企业提高工作效率心得体会
  • 科技局网站查新怎么做手机百度网页版
  • 合肥做网站的公司有哪些搜索引擎推广有哪些平台
  • 哪个网站名片做的号免费seo网站推荐一下
  • 做财经类网站要许可吗成都爱站网seo站长查询工具
  • 外贸询单网站快速排名优化报价
  • 专门做it招聘的网站百度搜索引擎技巧
  • 那个网站做扑克牌便宜cilimao磁力猫搜索引擎
  • 清溪网站建设关键词林俊杰
  • 中外商贸做网站好在哪少儿编程
  • 网站的建设搜索网页内容
  • 可以搜索附近手机的软件旺道seo系统
  • 网站频道运营怎么做小程序开发公司十大排名