源自:<<操作系统设计与实现>>,page 36
peterson互斥算法 1981
#define FALSE 0
#define TRUE 1
#define N 2 /*进程数*/
int turn; /*轮到谁了?*/
int interested[N]; /*所有值初始为0(FALSE)*/
void enter_region(int process) /*进程号为0或1*/
{
int other; /*另一个进程的进程号*/
other=1-process; /*另一个进程*/
interested[process]=TRUE; /*标识出希望进入临界区*/
turn=process; /*设置标志位*/
while(turn==process && interested[other]==TRUE); /*空语句*/
}
void leave_region(int process) /*process:即将离开临界区的进程*/
{
interested[process]=FALSE; /*标识将离开临界区*/
}