happens-before:并发与内存模型中的一个关键关系,表示在可见性与顺序性上,事件A“先发生于”事件B——也就是说,A的结果(例如写入的值)在B中应当是可见的,并且系统必须保证这种先后顺序不会被打破。常用于解释线程之间的同步与数据竞争问题。(在不同语言/平台的内存模型中,细节略有差异。)
/ˌhæpənz bɪˈfɔːr/
A lock release happens-before a later lock acquire on the same mutex.
对同一把互斥锁而言,“解锁”在内存模型中先发生于之后的“加锁”。
If the write happens-before the read, the second thread must observe the updated value, even if the CPU reorders other instructions.
如果写入先发生于读取,那么第二个线程必须看到更新后的值,即使CPU对其他指令进行了重排序。
该术语由 happen(发生) 与 before(在……之前)构成,直译为“先发生”。在并发领域中,它被赋予了形式化含义:不仅是时间上的先后,更强调在内存可见性与执行顺序约束上的“先后保证”。这一概念在现代编程语言的内存模型(如 Java、C++)中被系统化使用。