那只是cpu 2(thread 2)的视图,cpu 3(thread 3)的视图可能是完全不一样的。
store操作可能只是操作了cache,而cache的改变并未同步给别的cpu,所以别的cpu看到的可能是另一个视图。
t2看到t1执行了x=10的side effect,但是t3并未看到这个t1这个操作的side effect,
t3只是看到t2执行了y=10的side effect。
补个时序图,绿色的表示side effect跨cpu生效,红色表示side effect还没跨cpu生效,白色表示在这个具体的例子中不关心。
【 在 libgcc 的大作中提到: 】
: 但是thread2的y.store在x.load条件约束之内,这难道也能乱序?
--
修改:z16166 FROM 221.220.175.*
FROM 221.220.175.*