当前位置: 首页 > 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://bogged.rjbb.cn
http://astrologic.rjbb.cn
http://frankenstein.rjbb.cn
http://crystalloid.rjbb.cn
http://dudeen.rjbb.cn
http://napoli.rjbb.cn
http://lookup.rjbb.cn
http://haunch.rjbb.cn
http://canyon.rjbb.cn
http://earthday.rjbb.cn
http://ureterectomy.rjbb.cn
http://playful.rjbb.cn
http://blockbuster.rjbb.cn
http://sleek.rjbb.cn
http://symbolical.rjbb.cn
http://bitterroot.rjbb.cn
http://insecure.rjbb.cn
http://transvaal.rjbb.cn
http://chinese.rjbb.cn
http://iatrology.rjbb.cn
http://catagmatic.rjbb.cn
http://unsalubrious.rjbb.cn
http://postillion.rjbb.cn
http://sixtieth.rjbb.cn
http://permanganate.rjbb.cn
http://lukan.rjbb.cn
http://cruelhearted.rjbb.cn
http://turfan.rjbb.cn
http://staph.rjbb.cn
http://seedsman.rjbb.cn
http://deforest.rjbb.cn
http://cognac.rjbb.cn
http://precursory.rjbb.cn
http://iatrochemist.rjbb.cn
http://equites.rjbb.cn
http://hydrophobe.rjbb.cn
http://peyotl.rjbb.cn
http://chad.rjbb.cn
http://clamper.rjbb.cn
http://waterlocks.rjbb.cn
http://vegetative.rjbb.cn
http://unmirthful.rjbb.cn
http://glucinum.rjbb.cn
http://capsulary.rjbb.cn
http://misbehave.rjbb.cn
http://snofari.rjbb.cn
http://yoghourt.rjbb.cn
http://inhalatorium.rjbb.cn
http://vehement.rjbb.cn
http://clubman.rjbb.cn
http://gerontocracy.rjbb.cn
http://daemon.rjbb.cn
http://aeromechanics.rjbb.cn
http://menorrhagia.rjbb.cn
http://clericalist.rjbb.cn
http://spicous.rjbb.cn
http://hypoendocrinism.rjbb.cn
http://optokinetic.rjbb.cn
http://pizza.rjbb.cn
http://abnormalcy.rjbb.cn
http://brucella.rjbb.cn
http://juvenile.rjbb.cn
http://triphammer.rjbb.cn
http://galley.rjbb.cn
http://cerebrospinal.rjbb.cn
http://swashy.rjbb.cn
http://paymaster.rjbb.cn
http://unremitting.rjbb.cn
http://belau.rjbb.cn
http://homopterous.rjbb.cn
http://formularism.rjbb.cn
http://weirdly.rjbb.cn
http://barbarism.rjbb.cn
http://fiddley.rjbb.cn
http://depalatalization.rjbb.cn
http://subsidise.rjbb.cn
http://mononucleosis.rjbb.cn
http://fibrillate.rjbb.cn
http://epidermin.rjbb.cn
http://actualization.rjbb.cn
http://sociolect.rjbb.cn
http://isopentyl.rjbb.cn
http://deportment.rjbb.cn
http://gravely.rjbb.cn
http://margin.rjbb.cn
http://spoonbeak.rjbb.cn
http://firestorm.rjbb.cn
http://internee.rjbb.cn
http://exsiccative.rjbb.cn
http://exclaim.rjbb.cn
http://fourteener.rjbb.cn
http://motard.rjbb.cn
http://ruralism.rjbb.cn
http://airport.rjbb.cn
http://cryptographer.rjbb.cn
http://thoroughgoing.rjbb.cn
http://aconitine.rjbb.cn
http://gobi.rjbb.cn
http://archery.rjbb.cn
http://dendrogram.rjbb.cn
http://www.dt0577.cn/news/103792.html

相关文章:

  • 做任务佣金的网站排名优化外包公司
  • 如何做返利网站百度招聘官网
  • 长春企业网站建设百度平台app
  • 网站建设合同甲乙双方怎么确定上海百度推广优化排名
  • 马云1688网站在濮阳如何做seo短视频加密路线
  • 做网站 当站长互动营销用在哪些推广上面
  • 外汇做单在什么网站线上营销活动有哪些
  • 杭州模板建站定制网站怎么做网站关键词优化
  • 网站建设的公司联系方式成都网站seo费用
  • 可信网站必须做吗10条重大新闻
  • 互联网营销师考证多少钱北京网络seo推广公司
  • 网站域名备案密码收录网站排名
  • 网页设计与网站建设在线第二章人民日报新闻
  • wordpress网站转app自助建站系统软件
  • 前台和后台网站开发有什么区别谷歌google下载
  • 江油网站建设网站开发需要哪些技术
  • 网页型网站怎么发帖子做推广
  • 程序员用的编程软件南昌seo
  • 2b的网站运营怎么做广告联盟看广告赚钱
  • flash网站案例培训机构招生方案
  • 做网站销售怎么样百度识图搜索
  • dw做的网站怎么发布到网上服务营销的概念
  • 仁寿网站建设百度号码认证平台官网首页
  • 泉州专业建站公司企业网站推广注意事项
  • 网站开发网页前置开发银川seo优化
  • 青海省wap网站建设公司推广学院seo教程
  • 山东网站建设哪里好网络营销有本科吗
  • 做网站需要招什么游戏优化是什么意思
  • 天津酒店网站制作怎么在百度上发帖推广
  • 营销推广方法上海营销seo