atomic | #include 原子操作(atomic): 互斥量的加锁一般是针对一个代码段,而原子操作针对的一般都是一个变量。原子变量既不可复制亦不可移动。(1)它表示在多个线程访问同一个全局资源的时候,能够确保所有其他的线程都不在同一时间内访问相同的资源。也就是他确保了在同一时刻只有唯一的线程对这个资源进行访问。这有点类似互斥对象对共享资源的访问的保护,但是原子操作更加接近底层,因而效率更高。是线程安全的。 (2)原子数据类型不会发生数据竞争,能直接用在多线程中而不必我们用户对其进行添加互斥资源锁的类型。从实现上,大家可以理解为这些原子类型内部自己加了锁。 (3)C++11中所有的原子类都是不允许拷贝、不允许Move的,atomic_flag也不例外。 (4)C++11 对常见的原子操作进行了抽象,定义出统一的接口,并根据编译选项/环境产生平台相关的实现。新标准将原子操作定义为atomic模板类的成员函数,囊括了绝大多数典型的操作——读、写、比较、交换等
(4)macro
(5)memory_order:内存顺序
(6)Functions (7)std::atomic的限制:trivially copyable(可平凡复制):一个类型如果是trivially copyable,则使用memcpy这种方式把它的数据从一个地方拷贝出来会得到相同的结果。 1.没有non-trivial 的拷贝构造函数 2.没有non-trivial的move构造函数 3.没有non-trivial的赋值操作符 4.没有non-trivial的move赋值操作符 5.有一个trivial的析构函数 |
|
郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
赞 (0)
java中条件等待
上一篇 2022年6月30日
LeetCode环形链表
下一篇 2022年6月30日