我阅读了cpp文档并理解了
ATOMIC_INIT
- 非原子,容易发生数据竞争(因此存在问题)
- 从指令中的术语'init'开始,我相信它必须首次用于初始化变量。
Atomic_store - 以原子方式将值存储到原子变量
中那么为什么我们不使用原子库来初始化变量呢?如果是这样,为什么他们有atomic_init?
使用atomic_init比使用atomic_store有什么好处吗?
答案 0 :(得分:3)
通常,您不需要以原子方式初始化任何内容,因为这意味着多个线程竞争使用未初始化的内存。
通常,内存在构造/初始化期间是单线程的,但是,它以其他线程可以开始使用它的方式“发布”。
在全局原子的情况下,通常你会在更多线程存在之前提前初始化它们。
使用Atomic_init
的好处是明确表示初始化,并绕过少量开销。