一、信号量
关于解决程序的同步互斥问题的信号量,其整型信号量的定义如下:
white(s){ //P信号量
while(s<=0);//进入死循环
s=s-1;
}
signal(s){ //V操作
s=s+1;
}
二、利用信号量实现前驱关系
假设进程的前驱如下图所示:
semaphore a1=a2=b1=b2=c=d=e=O; //初始化信号量
S0(){ //P0进程
V(a1);
V(a2) ;
}
S1(){ //P1进程
P(a1); //监测P0进程是否完成
V(b1); //释放b1信号量
V(b2); //释放b2信号量
}
S2(){ //P2进程
P(a2);//监测P0进程是否完成
V(c);
}
S3(){//P3进程
p(b1); //监测P1进程是否完成
V(d);
}
S4(){//P4进程
p(b2); //监测P1进程是否完成
V(e);
}
S5(){//P5进程
p(c); //监测P2进程是否完成
p(d); //监测P3进程是否完成
p(e); //监测P4进程是否完成
}