मैं (एवी Silberschatz, पीटर बाएर गैल्विन, ग्रेग गैग्ने) संस्करण 9 के प्रसिद्ध ऑपरेटिंग सिस्टम अवधारणाओं किताब पढ़ रहा हूँ सेट: http://codex.cs.yale.edu/avi/os-book/OS9/परीक्षण के साथ घिरा-इंतज़ार कर म्युचुअल बहिष्करण और
प्रक्रिया तुल्यकालन अध्याय में, वहाँ एक है "test_and_set साथ पारस्परिक अपवर्जन घिरा-इंतज़ार कर" के रूप में पालन के लिए एल्गोरिथ्म:
do {
waiting[i] = true;
key = true; // <-- Boolean variable that I do not see its utility
while (waiting[i] && key) // <-- the value of the key variable here is always true
key = test_and_set(&lock); // <-- it might become false here, but what is the point?
waiting[i] = false;
/* critical section */
j = (i + 1) % n;
while ((j != i) && !waiting[j])
j = (j + 1) % n;
if (j == i)
lock = false;
else
waiting[j] = false;
/* remainder section */
} while (true);
मैं बूलियन चर key
(3, ऊपर कोड की 4 और 5 लाइनों में प्रयुक्त) की भूमिका नहीं देख सकते हैं, मैं देखें कि हम इसे एल्गोरिदम पर किसी भी विशेष प्रभाव के बिना हटा सकते हैं, क्या मैं सही हूं या मैंने कुछ याद किया है?
__key__ __while loop__ से बाहर निकलने के लिए यहां उपयोग किए जाने वाले दो तरीकों में से एक है, यह झूठ पर सेट है यदि __lock__ गलत है और यह वर्तमान प्रक्रिया को निष्पादित करने के लिए वर्तमान प्रक्रिया को सक्षम करता है। –