在 C++ 中,我们有关键字volatile和atomic类。它们之间的区别是,volatile 不保证线程安全的并发读写,而只是保证编译器不会将变量的值存储在缓存中,而是从内存中加载变量,而 atomic 保证线程安全的并发读写。
volatile
atomic
众所周知,原子读操作是不可分割的,即当一个或多个线程读取变量的值时,两个线程都不能将新值写入变量,所以我认为我们总是读取最新值,但我不确定:)
所以,我的问题是:如果我们声明原子变量,我们是否总是获得变量调用load()操作的最新值?
load()
c++ multithreading atomic volatile
atomic ×1
c++ ×1
multithreading ×1
volatile ×1