小编TwI*_*ITe的帖子

原子读取是否保证读取最新值?

在 C++ 中,我们有关键字volatileatomic类。它们之间的区别是,volatile 不保证线程安全的并发读写,而只是保证编译器不会将变量的值存储在缓存中,而是从内存中加载变量,而 atomic 保证线程安全的并发读写。

众所周知,原子读操作是不可分割的,即当一个或多个线程读取变量的值时,两个线程都不能将新值写入变量,所以我认为我们总是读取最新值,但我不确定:)

所以,我的问题是:如果我们声明原子变量,我们是否总是获得变量调用load()操作的最新值

c++ multithreading atomic volatile

7
推荐指数
1
解决办法
1712
查看次数

compare_exchange C++函数如何确定竞争条件?

如我们所知,compare_exchange_weak()如果存在竞争条件,则返回错误(错误值),因此无法完全执行操作.但是竞争条件究竟是如何确定的compare_exchange_weak()

lock cmpxchg如果多一个线程尝试读/写值,即获取锁,并且确切地说这种方式compare_exchange_weak决定竞争条件,指令是否会返回错误?

c++ multithreading x86-64 atomic compare-and-swap

3
推荐指数
1
解决办法
147
查看次数