下面这种关于样本结果的问题被称为 litmus test
。它只有两个答案:可能还是不可能?为我们提供了一种区分内存一致性模型的清晰方法:如果一个模型支持特定的执行,而另一个不支持,那么这两个模型显然不同。
litmus test
假设所有变量都初始为 0
, rN
表示非共享变量,而是一个线程本地寄存器。
Litmus Test: Message Passing
Can this program see r1 = 1, r2 = 0?
// Thread 1 // Thread 2
x = 1 r1 = y
y = 1 r2 = x
然而不幸的是,一个特定的模型对一个特定的 litmus test
给出的答案往往令人惊讶。