1.确定有四个进程A,B,C,D ;C和D互斥,A和C同步,B和D同步
2.确定信号量和初值:临界资源为一个报箱,三种状态
设信号量empty:表明报箱是否为空,初值为1;
paper1:表明报箱中是否有生活报,初值为0;
paper2:表明报箱中是否有晚报,初值为0;
3.先同步后互斥
C() D()
{ {
while(1){ while(1){
P(empty) P(empty)
放生活报; 放晚报;
V(paper1); V(paper2)
} }
} }
A() B()
{ {
while(1){ while(1){
P(paper1); P(paper2)
拿生活报; 拿晚报;
V(empty); V(empty)
} }
} }
main()
{
C();
D();
A();
B();
}