利用信号量实现前驱关系
信号量也可以用来描述程序之间或者语句之间的前驱关系。
实现算法如下: Semaphore a1=a2=b1=b2=c=d=e=0; //初始化信号量 S1(){ …; V(a1);V(a2); //S1已经运行完成 } S2(){ P(a1); //检查S1是否运行完成 …; V(b1);V(b2);//S2已经运行完成 } S3(){ P(a2); //检查S1是否已经运行完成 …; V©; //S3已经运行完成 }
S4(){ P(b1); //检查S2是否已经运行完成 …; V(d); //S4已经运行完成 } S5(){ P(b2); //检查S2是否已经运行完成 …; V(e); //S5已经运行完成 } S6(){ P©; //检查S3是否已经运行完成 P(d); //检查S4是否已经运行完成 P(e); //检查S5是否已经运行完成 …; }