मुझे पाठकों-लेखकों की समस्या के लिए दूसरा एल्गोरिदम समझने में वास्तव में कठिन समय है। मैं सामान्य अवधारणा को समझता हूं, कि लेखकों को पाठकों पर प्राथमिकता मिलेगी (पाठक भूखा हो सकते हैं)। मैं इस एल्गोरिदम Reader/Writer Locks in C++ के सशर्त चर कार्यान्वयन को भी समझता हूं। हालांकि, semaphore & mutex कार्यान्वयन मुझे कोई समझ नहीं आता है।पाठकों के लिए दूसरा एल्गोरिदम समाधान-लेखक
int readcount, writecount; (initial value = 0)
semaphore mutex 1, mutex 2, mutex 3, w, r ; (initial value = 1)
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 done
P(mutex 1);
readcount := readcount - 1;
if readcount = 0 then V(w);
V(mutex 1);
WRITER
P(mutex 2);
writecount := writecount + 1;
if writecount = 1 then P(r);
V(mutex 2);
P(w);
writing is performed
V(w);
P(mutex 2);
writecount := writecount - 1;
if writecount = 0 then V(r);
V(mutex 2);
[http://en.wikipedia.org/wiki/Readers-writers_problem][2]
मुझे समझ नहीं आता क्या तीन सेमाफोर (म्युटेक्स 3, आर, और म्युटेक्स 1) पाठक ताला में लिए कर रहे हैं: यह विकिपीडिया से एक उदाहरण है। क्या रीडकाउंट के लिए पर्याप्त सेमफोर नहीं है?
क्या आप यह सुनिश्चित करने के लिए एल्गोरिदम या विकिपीडिया पेज पर एक लिंक पोस्ट करेंगे, हम सभी एक ही चीज़ को देख रहे हैं? – gbulmer