Я смотрю на алгоритм Петерсона (взаимное исключение для 2 процессов). Мой вопрос в том, что, если ни один процесс еще не вошел в критическую секцию, а P0 хочет войти в критическую секцию в первый раз, тогда флаг P1 будет ложным, так как же P0 войти в его критическую секцию? Условие входа P0 в критическую секцию зависит от нашего флага, чтобы P1 был истинным.
Код:
//flag[] is boolean array; and turn is an integer
flag[0] = false;
flag[1] = false;
turn;
P0: flag[0] = true;
turn = 1;
while (flag[1] == true && turn == 1)
{
// busy wait
}
// critical section
...
// end of critical section
flag[0] = false;
P1: flag[1] = true;
turn = 0;
while (flag[0] == true && turn == 0)
{
// busy wait
}
// critical section
...
// end of critical section
flag[1] = false;