c++11 原子类型与原子操作

1、原子类型和原子操作
(1)类型
c++11 原子类型与原子操作
(2)操作
c++11 原子类型与原子操作
(3)详述
● 原子类型只能从其模板参数类型中进行构造,标准不允许原子类型进行拷贝构造、移动构造,以及使用operator=等
● atomic_flag 是一个原子的布尔类型,无锁的,即线程对其访问不需要加锁;可支持test_and_set()是一种原子操作,用于在一个内存空间原子地写入新值并且返回旧值,如果对象被设置了,则返回true;clear()清除对象值,将变量值设为false;
2、内存模型,顺序一致性和memory_order
(1)类型
c++11 原子类型与原子操作
(2)详述
● x86以及SPARC(TSO模式)都被看作是采用强顺序内存模型的平台;而Alpha、PowerPC、ArmV7等平台,则采用弱顺序内存模型
● 存在弱顺序的内存模型原因:可使得处理器进一步发掘指令中的并行性,使得指令执行的性能更高
● 默认情况下,原子类型的变量在线程中总是保持着顺序执行的特性。
● 原子存储操作store可使用relaxed seq_cst release;原子写操作load可使用relaxed seq_cst acquire consume;可读可写操作可使用所有
● 先于发生关系总是传递的
3、线程局部存储
(1)拥有线程生命周期及线程可见性的变量
(2)如POSIX标准中的错误码全局变量errno,在多线程中将遭遇问题;
(3)c++11中的解决方法是通过thread_local 修饰符声明变量即可:如int thread_local errCode;则errCode在线程开始时被初始化,而在线程结束时该值不在有效
4、快速退出
(1)teminate函数;没有被捕捉的异常就会导致其被调用,其默认是去调用abort函数。可通过set_terminate函数改变默认行为
(2)abort不会调用任何析构函数<terminate默认下也一样>,抛出信号:SIGABRT
(3)exit:属于正常退出范畴的程序终止,会正常调用自动变量的析构函数,且会调用atexit注册的函数,调用次序与其注册顺序相反
(4)在C++11中,引入quick_exit,该函数并不执行析构函数而只是使程序终止。与abort不同,abort是异常退出,quick_exit和exit同属于正常退出。也可使用at_quick_exit注册函数

转载于:https://blog.51cto.com/yebaoshan/2108101

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/254744.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

get_metrology_object_measures获取测量区域和计量模型的计量对象的边缘位置结果

目录get_metrology_object_measures&#xff08;算子&#xff09;描述参数get_metrology_object_measures&#xff08;算子&#xff09; get_metrology_object_measures - 获取测量区域和计量模型的计量对象的边缘位置结果。 get_metrology_object_measures&#xff08;&…

依弗科(上海)机电设备有限公司

机器人喷涂倒计时&#xff0c;上帝帮我实现愿望吧 阿门 &#xfeff;&#xfeff;&#xfeff;&#xfeff;

外部变量和外部函数

C程序由一组对象组成&#xff0c;这些对象包括程序中所使用的变量和实现特定功能的函数。变量可以分为函数内部定义、使用的变量和函数外部定义的变量&#xff0c;通常情况下&#xff0c;把函数内部定义、使用的变量称为内部变量或局部变量&#xff0c;而将在函数外部定义的、供…

gulp中使用babel-polyfill编译es6拓展语法

今天想在新项目中使用es6的generators&#xff0c;发现虽然gulp已经有了babel编译&#xff0c;但仍会报错&#xff0c;网上查找后发现解决办法是加载polyfill&#xff0c;但是找到的办法都不试用我的项目。 解决办法&#xff1a;在index.html中加载node_modules的babel-polyfil…

CoDeSys

&#xfeff;&#xfeff;CoDeSys是全球最著名的PLC内核软件研发厂家德国的3S&#xff08;SMART&#xff0c;SOFTWARE&#xff0c;SOLUTIONS&#xff09;公司出的一款与制造商无关的IEC 61131-1编程软件。CoDeSys 支持完整版本的IEC61131标准的编程环境&#xff0c;支持标准的六…

使用halcon结合机械XY轴对相机进行9点标定

小哥哥小姐姐觉得有用点个赞呗&#xff01; 先在halcon中计算仿射变换矩阵并验证 //在图像中找到的模板中心位置 PicX:[1680.721,2065.147,911.499,526.798,1290.920,1285.731,1300.953] PicY:[968.321,964.366,976.283,980.035, 587.055,394.727,1355.487] //与图像中查找…

Ubuntu Linux 提出新的发布模式——测试周

2019独角兽企业重金招聘Python工程师标准>>> 导读开源技术项目最大的优势之一就是社区的每个人都可以自由地提出想法&#xff0c;如果获得社区支持&#xff0c;它可以变成现实。著名的 Ubuntu 开发人员 Simon Quigley 就提出了一个可能改变 Ubuntu Linux 开发过程的…

264 I和IDR

I和IDR帧都是使用帧内预测的。它们都是同一个东西而已,在编码和解码中为了方便&#xff0c;要首个I帧和其他I帧区别开&#xff0c;所以才把第一个首个I帧叫IDR&#xff0c;这样就方便控制编码和解码流程。IDR帧的作用是立刻刷新,使错误不致传播,从IDR帧开始,重新算一个新的序列…

gen_caltab生成标定文件

目录gen_caltab&#xff08;算子&#xff09;描述参数gen_caltab&#xff08;算子&#xff09; gen_caltab - 为具有矩形排列标记的校准板生成校准板描述文件和相应的PostScript文件。 gen_caltab&#xff08;:: XNum&#xff0c;YNum&#xff0c;MarkDist&#xff0c;Diamet…

主席树,喵~

稍微总结一下主席树吧 Too Difficult&#xff01;搞了一天搞出一大堆怎么令人悲伤的辣鸡代码。总之先总结一下吧&#xff0c;以后碰到这种问题直接拿去毒害队友好了。 UPD 5/24 苟狗是沙比 一个节点记录三个信息&#xff1a;lson,rson,sum 用pid表示节点个数。 build void buil…

【转】小白级的CocoaPods安装和使用教程

原文网址&#xff1a;http://www.jianshu.com/p/e2f65848dddc 百度有很多CocoaPods的安装教程.第一次看的时候,确实有点摸不透的感觉.经过思考,一步一步来实践,前后花了三十几分钟,才顺利使用..所以想了想,我还是写一个小白级的教程吧.细到每一个细节都说明. 让你不用10分钟解决…

常见错误总结

少打头文件 少打using namespace std; 命名冲突&#xff0c;全局变量与局部变量命名一致&#xff0c;导致使用的值不是期望值 边读边写&#xff0c;导致改后读&#xff0c;覆盖写入的值 长整数移位溢出&#xff0c;1<<63是错误的&#xff0c;应该写成1ll<<63 循环变…

x264_sps_init

x264_sps_init此函数为序列量化集的初始化。主要对结构体x264_sps_t中参数的初始化。 void x264_sps_init( x264_sps_t *sps, int i_id, x264_param_t *param ) { sps->i_id i_id;首先设置序列参数集的ID b_qpprime_y_zero_transform_bypass判断码率控制方法是否是恒定质量…

HALCON相机标定相机内参相机外参

目录相机标定1.相机标定是什么2.怎么使用halcon进行相机内外参标定&#xff1f;&#xff08;1&#xff09;搭建硬件1.**相机连好电脑&#xff0c;用相机厂家软件打开相机&#xff0c;检查一下相机是否正常。**2.**接下来使用halcon连接相机**&#xff08;2&#xff09;开始标定…

ionic更改端口号

ionic serve -p 8888 —— 重新指定端口号为8888 serve [options] ............................... 启动本地服务器进行开发测试 dev/testing   [--consolelogs|-c] ..................... 输入app的控制台到ionic的控制台显示   [--serverlogs|-s] .....................…

angular change the url , prevent reloading

http://stackoverflow.com/questions/14974271/can-you-change-a-path-without-reloading-the-controller-in-angularjs $location.search({vln: $scope.vln_id}, false);会改变url中 &#xff1f; 后面的 搜索参数&#xff0c;但是controller不会重新实例化。angular 官方文档…

Ubuntu apt-get 更新/查看软件

ubuntu 升级软件&#xff1a; sudo apt-get update 更新源  sudo apt-get upgrade 更新已安装的包  sudo apt-get dist-upgrade 升级系统 ubuntu升级特定软件&#xff1a; 可以用 sudo apt-get install pkgname 看软件安装位置:dpkg -L xxxx 查看软件是否安装&#xff1…

X264设定

--aq-mode <integer> AQ method [1]- 0: Disabled- 1: Variance AQ (complexity mask)说明&#xff1a;自适应量化方法&#xff0c;可以改善某些场景过于模糊等问题&#xff0c;默认开启- 0: 关闭- 1: 可变AQ推荐值&#xff1a;默认范例&#xff1a;--aq-mode 1--aq-stre…