Процесс 0 выходит из флага установки критической секции [0] = ЛОЖЬ;но затем Процесс 1 не возобновляет выполнение, а Процесс 0 запускается заново, устанавливает флаг [0] = ИСТИНА;
Да, вы правы, но когда Процесс 0 запускается снова и пытаетсяповторно войдите в критическую секцию, он снова выполнит следующие два оператора:
flag[0] = TRUE;
turn = 1;
, поэтому поворот будет 1 , и, как мы знаем, Процесс 1 еще невошел в критическую секцию, из-за которой флаг [1] по-прежнему true и, следовательно, условие цикла
while (flag[1] && turn == 1);
будет true , Это означает, что процесс 0 не сможет дважды войти в критическую секцию. Это удовлетворяет условию Ожидание с ограничением. Также всякий раз, когда процесс 1 возобновляет выполнение, условие
while (flag[0] && turn == 0);
станет ложным, поскольку ход - 1 , и он действительно войдет в критическую секцию.