为什么释放序列只能包含读-修改-写而不能包含纯写

TSK*_*TSK 5 c++ atomic cpu-architecture memory-model stdatomic

对原子对象M执行释放操作A后,M的修改顺序的最长连续子序列包括:

  1. 由执行 A 的同一线程执行写入。(C++20 之前)
  2. 任何线程对 M 进行原子读-修改-写操作。被称为以 A 为首的释放序列。
  • Q1:为什么需要释放顺序的概念?

    A1:参见“释放顺序”是什么意思?

  • Q2:C++20中第一项被删除了吗?

  • 问题 3:为什么读-修改-写操作符合发布顺序,而纯写操作则不然?

    宽松的 RMW 有什么特别之处,可以让它们形成一个链,而不需要成为获取加载和释放存储?是用计算机体系结构术语,还是用 C++ 语言形式主义?或者换句话说,硬件如何支持原子 RMW 的释放序列语义,但具有中断连接的纯存储?