我有一个互斥库,并且正在尝试实现一个写优先锁。我正在看这个例子:
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?