信号量操作实现他们的同步
设公共汽车上,售票员和司机的活动分别是:
售票员的活动: 关车门;
售票;
开车门;
司机的活动是: 启动车辆;
正常行车;
到站停车;
在汽车不断地到站,停车、行驶过程中,请用信号量操作实现他们的同步。
解:分析题意得前趋图为:
P1 ( ) { 关门 ; signal(a); signal (b) ; }
P2( ) { wait(a) ; 启动; signal( c) ; }
P3( ) { wait (c) ;行车; signal ( e); }
P4( ) { wait ( b); 售票; signal ( d); }
P5( ) {wait(e); wait(d);停车; signal (f) }
P6 () { wait( f) ;开门;}
main() {
Semaphore a,b,c,d,e,f;
a.value = b.vlaue=c.value = 0;
d.value = e.value = f.value = 0;
cobegin
P1 ();p2(); P3(); P4(); p5(); p6();
Coend
}