内存屏障对其他线程的数据可见性的影响

时间:2020-07-27 16:35:07

标签: c++ c c++11

当线程T在任何时间点读取对象时,它看到的值可能是:

  1. 对象的初始值。
  2. T存储的值。
  3. 另一个线程存储的值。

还有内存障碍(加载-加载加载-存储存储-加载存储-存储< / strong>),可以定义为:

<< strong>加载 s | 存储 s> 之前不能重新排序障碍 过去 障碍 和加载 s | 存储 s> 后,障碍无法重新排序 优先 到 障碍。

现在,假设线程T1正在执行这段代码:

load(X)
store(Y, 1)
-----------  <-- a barrier
load(Y)
store(X, 1)

另一个线程T2正在执行这段代码:

load(Y)
------- <--- a barrier
load(X)

当壁垒为以下条件时,T1和T2中的壁垒(假定它们相同)会对线程T2中X和Y的可见性产生什么影响

  1. 加载-加载
  2. 加载存储
  3. 存储加载
  4. 存储-存储

谢谢!

0 个答案:

没有答案
相关问题