P2: begin repeat
P(S2); 拣黑子; V(S1); until false end coend end
典型生产者问题1
• 有一材料保管员,他保管纸和笔假设干。 有A 、B 两组学生,A 组学生每人都备 有纸,B 组学生每人都备有笔.任一学 生只要能得到其他一种材料就可以写信。 有一个可以放一张纸或一支笔的小盒, 当小盒中无物品时,保管员就可任意放 一张纸或一支笔供学生取用,每次允许 一个学生从中取出自己所需的材料,当 学生从盒中取走材料后允许保管员再存
V(mutex); V(empty); until false end coend end;
哲学家进餐 解决方法1
至多只允许有四位哲学家同时去拿左边的筷 子,最终能保证至少有一位哲学家能够进 餐,并在用毕时能释放出他用过的两只筷 子,从而使更多的哲学家能够进餐。
semaphore seat=4; chopstick[5]={1,1,1,1,1}; process i {while(ture)
semaphore s, Sa , Sb, mutexa , mutexb ; s =1;mutexa =1;mutexb=1; sa =0; sb= 0 ; box ( PaPer , pen ) ;
cobegin { process 保管员 begin repeat P(S); take a material intobox ; if ( box ) = Paper then V ( Sa ) ; else V( Sb ) ; untile false ; end
• 有三个并发进程:R 负责从输入设备读入 信息块,M 负责对信息块加工处理;P 负 责打印输出信息块。今提供;
• 1〕一个缓冲区,可放置K 个信息块; • 2 〕二个缓冲区,每个可放置K 个信息块;