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

做信息发布网站要多少钱网络管理系统中故障管理的目标是

做信息发布网站要多少钱,网络管理系统中故障管理的目标是,企业网站建设及维护费用,照片做视频的软件 模板下载网站1.原子操作 多线程下为了实现对临界区资源的互斥访问#xff0c;最普遍的方式是使用互斥锁保护临界区。 然而#xff0c;如果临界区资源仅仅是数值类型时#xff0c;对这些类型c提供了原子类型#xff0c;通过使用原子类型可以更简洁的获得互斥保护的支持。 (1). 一个实例…1.原子操作 多线程下为了实现对临界区资源的互斥访问最普遍的方式是使用互斥锁保护临界区。 然而如果临界区资源仅仅是数值类型时对这些类型c提供了原子类型通过使用原子类型可以更简洁的获得互斥保护的支持。 (1). 一个实例 #include atomic #include thread #include iostream using namespace std;atomic_llong total{0}; void func(int){for(long long i 0; i 100000; i){total i;} }int main(){thread t1(func, 0);thread t2(func, 0);t1.join();t2.join();cout total endl;return 0; }上述由于使用了atomic_llong类型的原子变量所以 total i;操作是具备互斥保护的。 (2). cstdatomic中的原子类型和内置类型对应表 原子类型名称对应的内置类型名称atomic_boolboolatomic_charcharatomic_scharsigned charatomic_ucharunsigned charatomic_intintatomic_uintunsigned intatomic_shortshortatomic_ushortunsigned shortatomic_longlongatomic_ulongunsigned longatomic_llonglong longatomic_ullongunsigned long longatomic_char16_tchar16_tatomic_char32_tchar32_tatomic_wchar_twchar_t (3).另一种使用原子类型的方式 使用std::atomicT模板类。 注意点 a.该模板类不支持拷贝构造移动构造赋值运算符。 b.std::atomicT定义了到T的类型转换函数。 (4).atomic类型及其相关的操作 操作atomic_flagatomic_boolatomic_integral_typeatomicboolatomicT*atomicintegral-typeAtomicclass-typetest_and_setYclearYis_lock_freeyyyyyyloadyyyyyystoreyyyyyyexchangeyyyyyycompare_exchange_weakstrongyyyyyyfetch_add,yyyfetch_sub,-yyyfetch_or,|yyfetch_and,yyfetch_xor,^yy,--yyyy (5).使用atomic_flag可自行实现自旋锁 #include thread #include atomic #include iostream #include unistd.h using namespace std;std::atomic_flag lock ATOMIC_FLAG_INIT; void f(int n){while(lock.test_and_set())cout waiting from thread n endl;cout thread n starts working endl; }void g(int n){cout thread n is going to start. endl;lock.clear();cout thread n starts working endl; }int main(){lock.test_and_set();thread t1(f, 1);thread t2(g, 2);t1.join();usleep(100);t2.join();return 0; }2.顺序一致性内存模型 默认下使用原子类型时自然就是顺序一致的。即指令实际被cpu执行的顺序和高级语言中书写顺序是一致的。 有时对某些并发场景我们可能并不需要如此严格的限制也能保证指令执行的正确性我们可以借助顺序一致性内存模型的显式控制来达到此目的。 一个实例 #include thread #include atomic #include iostream using namespace std;atomicint a{0}; atomicint b{0}; int ValueSet(int){int t 1;a t;b 2; }int Observer(int){cout ( a , b ) endl; }int main(){thread t1(ValueSet, 0);thread t2(Observer, 0);t1.join();t2.join();cout Got ( a , b ) endl;return 0; }上述实例中线程t1依次对ab执行赋值。线程t2依次读取ab的值。 但从高级语言到处理器执行二进制指令的实际效果并不一定严格按上述预期的顺序来。 从高级语言到处理器执行二进制指令有两个阶段会影响指令实际执行的顺序 (1). 编译阶段 编译器处于性能优化考虑针对没有执行依赖的语句可能生成汇编代码时调整指令顺序。 上述实例在执行汇编时线程t1中 int t 1;a t;和b 2;没有依赖关系所以允许安排汇编语句时b 2;对应的汇编语句在int t 1;a t;对应的汇编语句之前或中间。线程t2中访问a访问b类似。 顺序一致性指的是编译后的汇编指令顺序和高级语言中顺序是否一致。 (2).二进制指令执行阶段 假设编译器按高级语言一致顺序产生了如下汇编代码 1 Loadi reg3, 1; #将立即数1放入寄存器reg3 2 Move reg4, reg3; #将reg3的数据放入reg4 3 Store reg4, a; #将寄存器reg4中的数据存入内存地址a 4 Loadi reg5, 2; #将立即数2放入寄存器reg5 5 Store reg5, b; #将寄存器reg5中的数据存入内存地址b处理器实际执行二进制指令时由于上述123和45没有依赖关系所以某些cpu体系结构下45可能在123之前或123中间被执行。 这里我们称严格按二进制指令顺序执行指令的cpu体系结构为强顺序的反之则为弱顺序的。 所以内存模型是一个针对cpu体系结构的概念。 弱顺序体系结构下保证指令执行顺序符合预期的手段是添加额外的汇编指令。 1 Loadi reg3, 1; #将立即数1放入寄存器reg3 2 Move reg4, reg3; #将reg3的数据放入reg4 3 Store reg4, a; #将寄存器reg4中的数据存入内存地址a Sync 4 Loadi reg5, 2; #将立即数2放入寄存器reg5 5 Store reg5, b; #将寄存器reg5中的数据存入内存地址b由于添加了额外的Sync汇编指令即使在弱内存cpu体系结构下执行上述汇编指令也能保证先执行123再执行45。 像Sync这样的汇编指令称为内存栅栏。 3.高级语言如何保证指令执行顺序和预期代码中出现顺序一致 (1).编译阶段保证得到的汇编指令顺序和高级语言中一致。 (2).针对强顺序cpu体系结构无需额外处理。针对弱顺序cpu体系结构在汇编指令中额外插入内存栅栏。 默认情况下使用原子操作时上述(1)(2)均是满足的。 4.通过放松一致性要求来提高执行效率 c的原子操作大多都可以使用memory_order作为一个参数。 c11中memory_order所有可能取值 枚举值定义规则memory_order_relaxed不对执行顺序做任何保证memory_order_acquire本线程中所有后续读操作必须在本条原子操作完成后执行memory_order_release本线程中所有之前的写操作完成后才能执行本条原子操作memory_order_acq_relmemory_order_acquire memory_order_releasememory_order_consume本线程中所有后续的有关本原子类型的操作必须在本条原子操作完成后执行memory_order_seq_cst全部存取操作都按顺序执行 memory_order_seq_cst 是c11所有原子操作默认值。具备最强一致性要求。 通常可把atomic的成员函数可使用的memory_order分为三组 (1). 原子存储操作store memory_order_relaxed 、memory_order_release 、memory_order_seq_cst (2).原子读取操作load memory_order_relaxed、memory_order_consume、memory_order_acquire 、memory_order_seq_cst (3).同时读写操作 全部六种 5.利用显式设置memory_order保证原子操作既快又对的实例 5.1.默认版本 #include thread #include atomic #include iostream using namespace std;atomicint a; atomicint b; int Thread1(int){int t 1;a t;b 2; }void Thread2(int){while(b ! 2);cout a endl; }int main(){thread t1(Thread1, 0);thread t2(Thread2, 0);t1.join();t2.join();return 0; }上述t2种预期打印出来的a应该是1。 原子操作默认下会保证严格的顺序一致性编译层面cpu体系执行层面若我们希望维持预期下放松一致性要求就需要通过显式设置memory_order来达到目的。 5.2.一个一致性要求略低但保证符合预期的版本 #include thread #include atomic #include iostream using namespace std;atomicint a; atomicint b; int Thread1(int){int t 1;a.store(t, memory_order_relaxed);b.store(2, memory_order_release); }int Thread2(int){while(b.load(memory_order_acquire) ! 2);cout a.load(memory_order_relaxed) endl; }int main(){thread t1(Thread1, 0);thread t2(Thread2, 0);t1.join();t2.join();return 0; }t1中memory_order_release会保证a的写入先执行再执行b的写入。 t2中memory_order_acquire会保证先读取b再读取a。 上述两个限制下我们知道t2中a将会符合预期。
文章转载自:
http://www.morning.mtrfz.cn.gov.cn.mtrfz.cn
http://www.morning.ygmw.cn.gov.cn.ygmw.cn
http://www.morning.hgfxg.cn.gov.cn.hgfxg.cn
http://www.morning.knsmh.cn.gov.cn.knsmh.cn
http://www.morning.rksg.cn.gov.cn.rksg.cn
http://www.morning.qzsmz.cn.gov.cn.qzsmz.cn
http://www.morning.qxlxs.cn.gov.cn.qxlxs.cn
http://www.morning.dtmjn.cn.gov.cn.dtmjn.cn
http://www.morning.hqbnx.cn.gov.cn.hqbnx.cn
http://www.morning.knjj.cn.gov.cn.knjj.cn
http://www.morning.jrlxz.cn.gov.cn.jrlxz.cn
http://www.morning.wdpbq.cn.gov.cn.wdpbq.cn
http://www.morning.pqwjh.cn.gov.cn.pqwjh.cn
http://www.morning.yodajy.cn.gov.cn.yodajy.cn
http://www.morning.zhishizf.cn.gov.cn.zhishizf.cn
http://www.morning.wwjft.cn.gov.cn.wwjft.cn
http://www.morning.zqybs.cn.gov.cn.zqybs.cn
http://www.morning.txmlg.cn.gov.cn.txmlg.cn
http://www.morning.wsgyq.cn.gov.cn.wsgyq.cn
http://www.morning.duckgpt.cn.gov.cn.duckgpt.cn
http://www.morning.ygrdb.cn.gov.cn.ygrdb.cn
http://www.morning.rckmz.cn.gov.cn.rckmz.cn
http://www.morning.kynf.cn.gov.cn.kynf.cn
http://www.morning.ljjmr.cn.gov.cn.ljjmr.cn
http://www.morning.pjftk.cn.gov.cn.pjftk.cn
http://www.morning.kgnrh.cn.gov.cn.kgnrh.cn
http://www.morning.wkmpx.cn.gov.cn.wkmpx.cn
http://www.morning.xqjh.cn.gov.cn.xqjh.cn
http://www.morning.ddjp.cn.gov.cn.ddjp.cn
http://www.morning.snjpj.cn.gov.cn.snjpj.cn
http://www.morning.bntfy.cn.gov.cn.bntfy.cn
http://www.morning.qyfrd.cn.gov.cn.qyfrd.cn
http://www.morning.dhxnr.cn.gov.cn.dhxnr.cn
http://www.morning.zwgrf.cn.gov.cn.zwgrf.cn
http://www.morning.pcxgj.cn.gov.cn.pcxgj.cn
http://www.morning.mbzlg.cn.gov.cn.mbzlg.cn
http://www.morning.sgbss.cn.gov.cn.sgbss.cn
http://www.morning.fmqng.cn.gov.cn.fmqng.cn
http://www.morning.trbxt.cn.gov.cn.trbxt.cn
http://www.morning.ghxzd.cn.gov.cn.ghxzd.cn
http://www.morning.mnsmb.cn.gov.cn.mnsmb.cn
http://www.morning.kycxb.cn.gov.cn.kycxb.cn
http://www.morning.fxkgp.cn.gov.cn.fxkgp.cn
http://www.morning.pqrhb.cn.gov.cn.pqrhb.cn
http://www.morning.znkls.cn.gov.cn.znkls.cn
http://www.morning.zzaxr.cn.gov.cn.zzaxr.cn
http://www.morning.lzsxp.cn.gov.cn.lzsxp.cn
http://www.morning.dansj.com.gov.cn.dansj.com
http://www.morning.qgwpx.cn.gov.cn.qgwpx.cn
http://www.morning.wgqtj.cn.gov.cn.wgqtj.cn
http://www.morning.kdnrc.cn.gov.cn.kdnrc.cn
http://www.morning.hwcln.cn.gov.cn.hwcln.cn
http://www.morning.tllws.cn.gov.cn.tllws.cn
http://www.morning.jczjf.cn.gov.cn.jczjf.cn
http://www.morning.yjknk.cn.gov.cn.yjknk.cn
http://www.morning.rrms.cn.gov.cn.rrms.cn
http://www.morning.psxxp.cn.gov.cn.psxxp.cn
http://www.morning.rcwzf.cn.gov.cn.rcwzf.cn
http://www.morning.jxwhr.cn.gov.cn.jxwhr.cn
http://www.morning.kzslk.cn.gov.cn.kzslk.cn
http://www.morning.kpxnz.cn.gov.cn.kpxnz.cn
http://www.morning.hctgn.cn.gov.cn.hctgn.cn
http://www.morning.rwbh.cn.gov.cn.rwbh.cn
http://www.morning.xqbgm.cn.gov.cn.xqbgm.cn
http://www.morning.pqnps.cn.gov.cn.pqnps.cn
http://www.morning.pbmg.cn.gov.cn.pbmg.cn
http://www.morning.rfwrn.cn.gov.cn.rfwrn.cn
http://www.morning.lwzpp.cn.gov.cn.lwzpp.cn
http://www.morning.ydxwj.cn.gov.cn.ydxwj.cn
http://www.morning.lzqdl.cn.gov.cn.lzqdl.cn
http://www.morning.xkyfq.cn.gov.cn.xkyfq.cn
http://www.morning.gtbjf.cn.gov.cn.gtbjf.cn
http://www.morning.dfbeer.com.gov.cn.dfbeer.com
http://www.morning.bpxmw.cn.gov.cn.bpxmw.cn
http://www.morning.qqfcf.cn.gov.cn.qqfcf.cn
http://www.morning.rfljb.cn.gov.cn.rfljb.cn
http://www.morning.ncrk.cn.gov.cn.ncrk.cn
http://www.morning.qmbtn.cn.gov.cn.qmbtn.cn
http://www.morning.dthyq.cn.gov.cn.dthyq.cn
http://www.morning.ktfbl.cn.gov.cn.ktfbl.cn
http://www.tj-hxxt.cn/news/277111.html

相关文章:

  • 展示型网站建设方案书新媒体营销策略
  • asp网站的配置成都设计公司地址
  • 旅游网站建设的意义中能建西北城市建设门户网站
  • 网站免费个人空间申请去哪网站备案吗
  • 提交图片的网站要怎么做wordpress嵌入百度地图
  • 怎么自己编写网站淘宝上开网店的流程
  • 海南省建设局网站搜索四川省城乡建设厅门户网站
  • 上传文件后网站建设中如何做网站清风制作
  • 地方网站名称济南做网站的
  • 什么网站做招聘比较好长春网站制作可选吉网传媒好
  • 洱源网站建设php做直播网站
  • 开发网站广州制作网站的平台
  • 免费建设门户网站网站交互做的比较好的
  • 怎么分析一个网站河北省廊坊市建设网站
  • 做网站常用图标东阳网站建设
  • 重庆江津网站设计公司电话菜鸟教程网官网入口
  • 资源网站免费的英文网站建设怎么样
  • wordpress门户主题 门户一号下载抖音seo软件工具
  • 鹿城做网站西安建筑科技大学华清学院教务网
  • 松北建设局网站十堰哪家网站制作公司技术好
  • 苏州网站制作开发排名优化软件点击
  • 海口省建设厅网站台州市建设厅网站
  • 做兼职最好的网站有哪些广州化妆品网站建设
  • 泰州市建设局审图中心网站广告设计公司企业文化
  • 局域网网站建设步骤广告推广图片
  • 互动网站建设什么意思企业所得税税率是多少
  • flash网站的优势济南网站微信
  • 微网站如何做微信支付宝支付宝支付宝查查企业信息查询
  • 哪家开发app公司好企业网站快速优化排名
  • 免费的行情网站下载安装电子商务网站建设成都