with memory_order_relaxed如何保证典型体系结构上原子变量的总修改顺序?

问题描述 投票:0回答:1

据我了解,memory_order_relaxed是为了避免在特定体系结构上订购时受到更严格的限制,可能需要昂贵的内存屏障。在那种情况下,如何在流行的处理器上实现原子变量的总修改顺序?

c++ c++11 atomic memory-barriers
1个回答
0
投票

而glib,答案是由编译器编写者来确保这一点。

例如,在x64上,原子增量直接与lock xadd指令相对应。因此,从概念上讲,如果您要使用memory_order_relaxed来增加std :: atomic,那么您告诉编译器的是“您需要原子地递增此变量,但在这里我没有施加任何compiler障碍来明确说明什么我需要在此变量增加之前或之后完成。

© www.soinside.com 2019 - 2024. All rights reserved.