189 8069 5689

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不会调用任何析构函数,抛出信号:SIGABRT
(3)exit:属于正常退出范畴的程序终止,会正常调用自动变量的析构函数,且会调用atexit注册的函数,调用次序与其注册顺序相反
(4)在C++11中,引入quick_exit,该函数并不执行析构函数而只是使程序终止。与abort不同,abort是异常退出,quick_exit和exit同属于正常退出。也可使用at_quick_exit注册函数

成都创新互联拥有十载成都网站建设工作经验,为各大企业提供网站设计、成都网站设计服务,对于网页设计、PC网站建设(电脑版网站建设)、成都app软件开发公司、wap网站建设(手机版网站建设)、程序开发、网站优化(SEO优化)、微网站、域名与空间等,凭借多年来在互联网的打拼,我们在互联网网站建设行业积累了很多网站制作、网站设计、网络营销经验,集策划、开发、设计、营销、管理等网站化运作于一体,具备承接各种规模类型的网站建设项目的能力。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


文章名称:c++11原子类型与原子操作-创新互联
新闻来源:http://cdxtjz.com/article/djpjpd.html

其他资讯