Peterson 算法:最后一次谦让决定等待者

P0

flag[0] = true;
turn = 1;
while (flag[1] && turn == 1);
critical section;
flag[0] = false;

P1

flag[1] = true;
turn = 0;
while (flag[0] && turn == 0);
critical section;
flag[1] = false;

共享状态与判断

flag[0]false
flag[1]false
turn-
P0:未判断
P1:未判断

同时竞争时,两个 while 条件不可能同时为真,因为 turn 只有一个值。