你跑偏了,文档的if语句不是用于表明“条件约束”,是表明“时刻”。
所以,应读为:
当thread2看到thread1给x的最新值后,对y采取行动。
当thread3看到thread2给y的最新值*之时刻*,thread3 未必看到thread1的对x的所做所为。此即,不同步。
好比上游项目组1发了新版本,项目组2采用后也发了新版本。你看到项目组2的新版本,也pull一把,一编译,砰!挂了。因为没跟新项目1的代码。
relax只保证你获取了项目2的“最新版本”之时刻后,你们项目组任何人再问他们要最新代码,他不会告诉你一个旧的版本号。
【 在 libgcc 的大作中提到: 】
: 但是thread2的y.store在x.load条件约束之内,这难道也能乱序?
--
FROM 117.39.204.*