Assembly x86是否有保留存储值的原子增量?

Assembly x86是否有保留存储值的原子增量?,assembly,x86,atomic,Assembly,X86,Atomic,我发现了lock inc addr,但这并没有保留存储值的副本,甚至在同一线程中紧接着读取的内容也可能在竞争写入之后出现 我找到的最好的解决方案是一个load/inc/loop。lock xadd是你的朋友。查看更多x86/x86\u 64原子原语和用法。在C++11 std::atomic中,+1做你想做的事。或者更简单地说,如果不需要屏障,就不能在非x86上使用较弱的内存\u relaxed来提高速度。(lock xadd实现fetch\u add,返回旧值)。

我发现了
lock inc addr
,但这并没有保留存储值的副本,甚至在同一线程中紧接着读取的内容也可能在竞争写入之后出现


我找到的最好的解决方案是一个
load
/
inc
/loop。

lock xadd
是你的朋友。

查看更多x86/x86\u 64原子原语和用法。

在C++11 std::atomic中,
+1
做你想做的事。或者更简单地说,如果不需要屏障,就不能在非x86上使用较弱的
内存\u relaxed
来提高速度。(
lock xadd
实现
fetch\u add
,返回旧值)。