我有一个互斥库,并且正在尝试实现一个写优先锁。我正在看这个例子:
https://en.wikipedia.org/wiki/Readers%E2%80%93writer_lock
我了解读优先锁,但我不了解写优先锁。有人可以解释如何实现吗?
具体来说,我不明白这部分:
While w:
wait c, m
我也不明白这个标志w是通用的,还是每个进程只是一个不同的标志。我猜是前者。
例如,这里我们看到了获取读锁的算法:
Lock m (blocking).
While (w or r > 0):
wait c, m
Set w to true.
Unlock m.
但这是什么wait c, m意思?这不能意味着等待同时锁定c和m,因为我们已经m在步骤 1 中锁定了。
而且,对于Set w to true- 这是否意味着w必须在所有流程或仅此流程中设置为 true?