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 只有一个值。