मैं पीटरसन और डेकर द्वारा एल्गोरिदम को समझने की कोशिश कर रहा हूं जो बहुत समान हैं और बहुत सारे समरूपता प्रदर्शित करते हैं।
मैंने अनौपचारिक भाषा में एल्गोरिदम को इस प्रकार बनाने की कोशिश की:
Peterson's: "I want to enter." flag[0]=true;
"You can enter next." turn=1;
"If you want to enter and while(flag[1]==true&&turn==1){
it's your turn I'll wait." }
Else: Enter CS! // CS
"I don't want to enter any more." flag[0]=false;
Dekker's: "I want to enter." flag[0]=true;
"If you want to enter while(flag[1]==true){
and if it's your turn if(turn!=0){
I don't want to enter any more." flag[0]=false;
"If it's your turn while(turn!=0){
I'll wait." }
"I want to enter." flag[0]=true;
}
}
Enter CS! // CS
"You can enter next." turn=1;
"I don't want to enter any more." flag[0]=false;
अंतर ऐसा लगता "You can enter next."
है कि जहां बिंदु होता है और वह तथ्य जो "if it's your turn I don't want to enter any more."
डेकर में होता है।
पीटरसन के एल्गोरिथ्म में, दो प्रक्रियाएं प्रमुख लगती हैं। जब तक यह दूसरे की बारी नहीं है एक प्रक्रिया महत्वपूर्ण खंड में अपना रास्ता मजबूर करने लगती है।
इसके विपरीत, डेकर के एल्गोरिथ्म में, दो प्रक्रियाएं विनम्र और विनम्र लगती हैं। यदि दोनों प्रक्रियाएँ महत्वपूर्ण खंड में प्रवेश करना चाहती हैं, और यह दूसरे की बारी है, तो यह प्रक्रिया तय करती है कि अब प्रवेश नहीं करना है। (क्या यह भुखमरी-स्वतंत्रता के लिए आवश्यक है? क्यों?)
ये एल्गोरिदम कितने अलग हैं? मुझे लगता है कि जब दोनों प्रक्रियाएं पीटरसन में महत्वपूर्ण खंड में प्रवेश करने की कोशिश करती हैं, तो प्रक्रिया कहती है "मैं प्रवेश करता हूं", जबकि डेकर की प्रक्रिया कहती है "आप प्रवेश कर सकते हैं"। क्या प्रत्येक एल्गोरिथ्म में प्रक्रियाओं के व्यवहार का तरीका कोई साफ कर सकता है? क्या इसे अनौपचारिक शब्दों में रखने का मेरा तरीका सही है?