双标志后检查法:先上锁后检查导致互相等待
P0
flag[0] = true;
while (flag[1]);
critical section;
flag[0] = false;
P1
flag[1] = true;
while (flag[0]);
critical section;
flag[1] = false;
共享状态
flag[0]false
flag[1]false
两个进程还未等待
问题根源:先上锁能避免同时进入,但双方都先上锁时,会把对方都挡在外面。