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

企业网站建设协议长沙seo培训

企业网站建设协议,长沙seo培训,无为网站建设,上海何时开放娱乐场所在上一节的卖票程序中&#xff0c;我们讲解了如何在多线程中保证临界资源的正确访问——使用互斥锁&#xff0c;即 lock_guard<mutex> lock(mtx); count;lock_guard<mutex> lock(mtx); count--; 从汇编角度解释线程间互斥-mutex互斥锁与lock_guard的使用-CSDN博客…

在上一节的卖票程序中,我们讲解了如何在多线程中保证临界资源的正确访问——使用互斥锁,即

lock_guard<mutex> lock(mtx);
count++;lock_guard<mutex> lock(mtx);
count--;

从汇编角度解释线程间互斥-mutex互斥锁与lock_guard的使用-CSDN博客

但是互斥锁是比较重的,临界区代码做的事情比较多,它涉及到系统调用和上下文的切换,在高并发的情况下可能会带来一定的性能影响。而原子操作通常在硬件层面实现,其执行速度更快,且不需要上下文的切换 

因此,当临界区仅仅只是一个变量而不是一段代码时,使用原子类型的效率比互斥锁要高

以下示例:

#include<iostream>
#include<thread>
#include<list>
#include<atomic>
using namespace std;volatile atomic_bool isReady(false);
volatile atomic_int mycount(0);void task()
{while(!isReady){std::this_thread::yield();//线程让出cpu时间,等待调度}for(int i=0;i<100;i++){mycount++;}
}int main()
{list<std::thread> tlist;for(int i=0;i<9;i++){tlist.push_back(thread(task));}isReady=true;for(auto& td:tlist){td.join();}cout<<mycount<<endl;return 0;
}

上述volatile关键字的作用是防止优化编译器把变量从内存装入 CPU 寄存器中。如果变量被装入寄存器,那么两个线程有可能一个使用内存中的变量,一个使用寄存器中的变量,这会造成程序的错误执行。

volatile 的意思是让编译器每次操作该变量时一定要从内存中真正取出,而不是使用已经存在寄存器中的值

http://www.hkea.cn/news/395250/

相关文章:

  • 济南 网站制作旺道营销软件
  • 新上线网站如何做搜索引擎站长素材网站
  • 做网站编辑深圳疫情防控最新消息
  • PHP网站开发项目式教程google下载手机版
  • 国外专门用于做网站图片的做网站要多少钱
  • 网站维护费用计入什么科目媒介星软文平台官网
  • 网站建设seo 视频做网站哪个平台好
  • 旅行社网站建设方案论文百度seo公司
  • 长沙网站建设与维护百度开户联系方式
  • 做pcr查基因序列的网站南京百度网站快速优化
  • 数据服务网站策划方案关键词快速优化排名软件
  • 响应式网站缺点学大教育培训机构电话
  • 江苏天德建设工程有限公司网站一个平台怎么推广
  • 石家庄做网络推广的网站推广平台收费标准
  • 贵阳天柱网站建设招聘域名注册平台有哪些
  • 网站建设电话营销百度问一问官网
  • 网站优化建设河南怎么关闭seo综合查询
  • 自贡做响应式网站开发公司google搜索引擎入口google
  • 东莞哪种网站推广好微信朋友圈推广文案
  • 现在学做网站赚钱吗东莞市优速网络科技有限公司
  • 宁津做网站公司宣传推广图片
  • 陕西的建设厅官方网站数据分析报告
  • 企业网站建设的定位互联网
  • 注册域名之后如何做网站优化清理大师
  • wordpress+在线播放推广seo网站
  • 丽水网站建设明恩玉杰网站开发框架
  • 如何设计网站中的上传功能搜索引擎技术基础
  • 余江区建设局网站百度搜索引擎优化的方法
  • 做网站用c 还是java万网域名注册教程
  • 青岛做网站那家好专业的网站优化公司排名