有一只笼子,每次只能放一只动物,猎手向往笼子里放猴子,农民向往笼子里放猪,动物园等着(接问题补充)
[分析与解答]设3个信号量:对 盘子的互斥S,对苹果的同步S1 ,对橘子的同步S2。 semaphore S=1,S1=S2=0; void father () { while (1) { 准备苹果; wait (S); 将苹果放在盘子内; signal (S1); } } void mother () { while (1) { 准备橘子; wait(S); 将橘子放在盘子内; signal (S2); } } void daughter () { while (1) { wait(S1); 从盘子上拿走苹果; signal (S); 吃苹果; } } void son () { while (1) { wait(S2); 从盘子里拿走橘子; signal (S); 吃橘子; } } main () { cobegin{ father(); mother(); dauyhter(); son(); } coend; }