您的位置:首页 > 编程语言 > C语言/C++

【博客5】c++11新特性:原子操作

2019-04-13 11:57 519 查看

一.原子操作:
指的是由多步操作组成的一个操作。如果该操作不能原子地执行,则要么执行完所有步骤,要么一步也不执行,不可能只执行所有步骤的一个子集。任何要求多于一个函数调用的操作都不是原子操作,因为在两个函数调用之间,内核可能会临时挂起线程,执行其他的操作,当内核切换回当前线程时,之前的数据可能别修改,所以不能保证是原子操作。

二.c++11的原子操作:
C++11中,终于有了原子操作的概念。标准提供了多个原子操作数据类型,atomic_int、 atomic_long等。在程序中使用这些数据类型的时候,编译器将保证针对原子数据类型的操作都是原子性的。也就是说,编译器保证多个线程访问这个共享资源的正确性。这样,我们在程序中就可以较少锁的使用,提高程序效率。

三.原子操作的优点:
使用的常规锁来解决问题,结果正确,但是耗时较久。使用的是C++11引入的原子数据类型,使用它程序结果正确,在运行速度上也比加锁的版本快很多。所以,在我们平常写程序的过程中,推荐使用C++11引入的原子变量。

四.在自己电脑vs2012下的一个原子操作例子:


五.c++11常见原子类型及其支持的操作:

大三学生一枚,文章均非抄袭或者模仿,均为原创,仅代表个人观点,如果文章有错误的地方,欢迎在下方提出,每条评论我都会去认真看并回复,同时感谢指正的前辈。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: