У меня есть библиотека мьютексов, и я пытаюсь реализовать блокировку, предпочитающую запись. Я смотрю на этот пример:
https://en.wikipedia.org/wiki/Readers%E2%80%93writer_lock
Я понимаю блокировку, предпочитающую чтение, но не понимаю блокировку, предпочитающую запись. Может кто-нибудь объяснить, как это реализовать?
В частности, я не понимаю эту часть:
While w:
wait c, m
Я также не понимаю, является ли флаг w
универсальным или просто другим флагом для каждого процесса. Я предполагаю, что это первое.
Например, здесь мы видим алгоритм получения read-lock:
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 во всех процессах или только в этом процессе?