每条弧都拥有一个信号量
每个信号量初值均是0
除信号量外其他控制流加信号量机制
题目描述:
利用p v 操作实现4*100米接力赛:
设同步信号量为s1,s2,s3赋初值s1=0,s2=0,s3=0;
设A B C D
p1(){A;v(s1);}定义进程
p2(){p(s1);B,v(s2)}
p3(){p(s2);c;v(s3)}
p4(){p(s3);D}
main(){
semaphore s1,s2,s3;定义同步信号量s1,s2,s3
s1=0;s2=0;s3=0;为同步信号量赋初值
cobegin
p1();p2();p3();p4();运行进程
coend;
}
利用pv操作实现前驱图:
设有同步信号量s13,s14,s24,s45,s46 初值为s13=0,s14=0,s24=0,s45=0,s46=0
p1(){s1;v(s13);v(s12);v(s14);}
p2(){p(s12);s2;v(s24);}
p3(){p(s13);s3;}
p4(){p(s14);p(s24);s4;v(s45);v(s46);}
p5(){p(s45);s5;}
p6(){p(s46);s6;}
main(){
semaphore s12,s13,s14,s24,s45,s46;
s1=0,s13=0,s14=0,s24=0,s45=0,s46=0;
cobegin
p1();p2();p3();p4();p5();p6();
coend;
}