C#互锁操作和内存排序

时间:2016-12-10 07:01:45

标签: c# multithreading

我理解对单个变量的两个interlocked操作是有序的。除此之外,是否对两个不同变量的interlocked操作有任何排序保证?

在c ++中,我们有memory_order_seq_cst语义来保证

  

29.3 / 3

     

所有memory_order_seq_cst上应该有一个总订单S.   操作,符合“之前发生”的顺序​​和   所有受影响地点的修改订单,......

编辑:如果我们将讨论限制在x86,那么就会有一个名为x86-TSO的内存模型,它指定了两个LOCK前缀操作之间的顺序。

  

要执行LOCK'd指令,必须首先执行一个线程   获得全局锁定。在指令结束时,它   刷新其存储缓冲区并放弃锁定。而   锁由一个线程保持,没有其他线程可以   读取。

根据上述规则,x86将全局排序两个互锁操作。

0 个答案:

没有答案