2016-04-02 9 views
0

私は最近Peterson's Critical Sectionの問題を解いています。 iとjの2つのプロセスがクリティカルセクションに入るようにします。 フラグ[j] == trueをWhileループに設定するとわかりません。 iがクリティカルセクションに入るときです。なぜ[その他のプロセス] == true Petersen's Solution

do 
{ 
    flag[i] = true; 
    turn = j; 
    while(**flag[j] == true** && turn == j); 
    Critical Section 
    flag[i] = false; 
} 
while(true); 

答えて

1

一方(フラグ[J] ==真 & &ターン== jの);

この行では、他のプロセスがクリティカルセクションを実行している場合、第2プロセスがフラグ変数(共有変数)をfalseに設定するまで、最初のプロセスは待機し続ける必要があります。

2番目のプロセスがクリティカルセクションを実行し、フラグ変数(共有変数)をfalseに設定した後で初めて、最初のプロセスはクリティカルセクションの実行を開始します。

関連する問題