memory_order_seq_cst操作的“之前发生”和“单个总顺序之前”之间的区别有什么区别?

时间:2017-11-20 14:03:10

标签: c++ concurrency language-lawyer

似乎没有任何情况可以得出结论:memory_order_seq_cst操作A在他们的单个总顺序中在另一个B之前,但A既不发生在B之前,也不发生在A之前。

因此,由于这一点和N4700 [atomics.order] 32.3\ 3,我断言关系“发生在”之前“和”先于单个总顺序“是等价的。因此所有这些规则: 32.3 \ 3,4,5,6,7 是多余的。它们已经被[intro.races] 6.8.2.1\ 14, 15, 16, 17中的一致性规则和[atomics.fences] 32.9\ 2, 3, 4中的围栏规则所涵盖。

1 个答案:

答案 0 :(得分:1)

  

似乎没有案例......

哦,好吧,there it is

/verbosity:quiet
  

此示例演示了需要顺序排序的情况。任何其他排序都可能触发断言,因为线程c和d有可能以相反的顺序观察原子x和y的变化。