C++原子操作(atomic)使用

小白记录贴

std::atomic<bool> a(true);    //定义一个类型为atomic_bool的原子变量并赋初值为true
原子操作:
赋值:
a = true;
a.store(true);

读取:
int b = a;
int b = a.load();

原子操作还可以包含一个参数:内存顺序(memory_order),是C++11为原子类型定义的内存模型,让程序员根据实际情况灵活地控制原子类型的执行顺序。通常情况下,使用该参数将有利于编译器进一步提高并行性能。

memory_order
枚举值 定义规则
memory_order_relaxed 不对执行顺序做任何保障
memory_order_acquire 本线程中,所有后续的读操作均在本条原子操作完成后执行
memory_order_release 本线程中,所有之前的写操作完成后才能执行本条原子操作
memory_order_acq_rel 同时包含memory_order_acquire和memory_order_release标记
memory_order_consume 本线程中,所有后续的有关本原子类型的操作,必须在本条原子操作完成后执行
memory_order_seq_cst 全部存取都按顺序执行

 

 

 

 

 

 

 

 

 

 

 

接口同样为store或load, 例:
a.store(true, memory_order_relaxed);
a.load(memory_order_relaxed);

原文链接: https://www.cnblogs.com/muzzik/p/12298487.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    C++原子操作(atomic)使用

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/328719

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月1日 下午4:49
下一篇 2023年3月1日 下午4:49

相关推荐