有一只铁笼子,每次只能放人一只动物,猎手只能向笼中放人老虎,农民只能向笼中放入猪,动物园等待取笼中的老虎,饭店等待取笼中的猪,试用P、V操作写出能同步执行的程序。
【正确答案】:题中存在着猎人和农民互斥使用铁笼,猎人和动物园与农民和饭店之间的协同工作,以及猎人和农民都要申请铁笼资源并互斥访问,猎人与动物园、农民与饭店间的同步操作。 TyPedef int S,sl,s2;//S定义铁笼资源,sl表示可取的老虎,s2表示可取的猪 S=l,sl=s2=0; Void P—hunter() { P(S); 放入老虎; V(s1); } Void P_zoom() { P(s1); 取出老虎; V(S); } Void P_farmer() { P(S); 放入猪; V(S2); } Void P_restaurant() { P(s2); 取出猪; V(S); }