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
,返回旧值)。