互斥过滤算法:弱公平性



我指的是这个过滤器算法注释:http://cs.nyu.edu/wies/teaching/ppc-14/material/lecture02.pdf

它说,它提供了弱公平性,并且某些线程可以被任意次数超越。(幻灯片98)

我无法理解这部分,因为最后一个写受害者值必须等待,并且已经等待线程移动到下一个级别,所以一个线程如何在这里被超越?

让我们考虑4个线程(t0, t1, t2和t3)使用过滤器锁来获得互斥。

我们假设t0卡在第0层,t1卡在第1层,以此类推。因此,t3进入它的临界区,然后解锁锁。注意:t0到t2卡在while((∃k != i) level[k] >= L) && victim[L] == i) {};中,这实际上是几行代码(参见Filter Lock Algorithm)。从现在开始,我将把这段代码称为(C1)。t2进入临界区并解锁,然后是t1。这意味着t0可以离开0级(C1)…然而,这并不意味着它不能被超越!很可能现在t3、t2和t1想要再次获得锁。因此,三个线程中的一个被过滤掉并卡在级别0 (C1)中,因为一个线程是"受害者",假设是t1。虽然t0满足离开(C1)的所有要求,但它仍然可能在(C1)的for循环中,因为由于各种体系结构原因,它可能"运行较慢"。这允许t2和t3超过t0。

最新更新