我理解对单个变量的两个interlocked
操作是有序的。除此之外,是否对两个不同变量的interlocked
操作有任何排序保证?
在c ++中,我们有memory_order_seq_cst
语义来保证
29.3 / 3
所有memory_order_seq_cst上应该有一个总订单S. 操作,符合“之前发生”的顺序和 所有受影响地点的修改订单,......
编辑:如果我们将讨论限制在x86,那么就会有一个名为x86-TSO的内存模型,它指定了两个LOCK
前缀操作之间的顺序。
要执行LOCK'd指令,必须首先执行一个线程 获得全局锁定。在指令结束时,它 刷新其存储缓冲区并放弃锁定。而 锁由一个线程保持,没有其他线程可以 读取。
根据上述规则,x86将全局排序两个互锁操作。