Saya mencoba memahami algoritma oleh Peterson dan Dekker yang sangat mirip dan menampilkan banyak simetri.
Saya mencoba merumuskan algoritma dalam bahasa informal seperti berikut:
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;
Perbedaannya tampaknya menjadi titik di mana "You can enter next."
terjadi dan fakta yang "if it's your turn I don't want to enter any more."
terjadi di Dekker.
Dalam algoritma Peterson, dua proses tampaknya dominan. Sebuah proses tampaknya memaksa masuk ke bagian kritis kecuali giliran orang lain.
Sebaliknya, dalam algoritma Dekker, kedua proses tersebut tampaknya tunduk dan sopan. Jika kedua proses ingin memasuki bagian kritis, dan giliran yang lain, proses memutuskan untuk tidak lagi ingin masuk. (Apakah ini diperlukan untuk kebebasan-kelaparan? Mengapa?)
Bagaimana tepatnya perbedaan algoritma ini? Saya membayangkan bahwa ketika kedua proses mencoba memasuki bagian kritis, di Peterson, proses mengatakan "Saya masuk", sedangkan di Dekker proses mengatakan "Anda boleh masuk". Adakah yang bisa menjernihkan perilaku proses di setiap algoritma? Apakah cara saya mengatakannya secara informal benar?