我不明白在第二個讀寫器問題的通用解決方案中讀者過程開始時最外層互斥體的目的是什麼。第二讀者 - 作者pr * blem - 爲什麼讀者需要第三個互斥體
爲了說明這一點,我將從適當的維基百科條目(link)發佈代碼。我在說mutex_3:
READER
P(mutex_3);
P(r);
P(mutex_1);
readcount := readcount + 1;
if readcount = 1 then P(w);
V(mutex_1);
V(r);
V(mutex_3);
reading is performed
P(mutex_1);
readcount := readcount - 1;
if readcount = 0 then V(w);
V(mutex_1);
我能想到的唯一答案就是阻止新讀者涌入。但我認爲除了它的核心功能之外,它已經完成了下一個互斥體,即r。我錯了嗎?