#define FALSE 0
#define TRUE 1
#define N 2 //进程数量
int turn; //现在轮到谁
int interested[N]; //所有值初始化为0
void enter_region(int process) //进程0或1
{
int other; //另一进程号
other = 1 - process;
turn = process; //设置标志
interested[process] = TRUE; //表示感兴趣
while(turn == process && interested[other] == TRUE)
}
void have_region(int process)
{
interested[process] = FALSE;
}
**缺点:**当两个进程几乎同时调用 enter_region()时,只有后者的进程号存入了turn中,前一个因重写而失效。因此先调用 enter_region()的进程循环0次进入临界区,而后调用的进程将不停循环,陷入"忙等状态"