桌上有一空盘,允许存放一只水果。爸爸可向盘中放苹果,也可向盘中放橘子,儿子专等吃盘中的橘子,女儿专等吃盘中的苹果。规定当盘空时一次只能放一只水果供吃者取用,请用P、V原语实现爸爸、儿子、女儿三个并发进程的同步。

admin2014-10-20  37

问题 桌上有一空盘,允许存放一只水果。爸爸可向盘中放苹果,也可向盘中放橘子,儿子专等吃盘中的橘子,女儿专等吃盘中的苹果。规定当盘空时一次只能放一只水果供吃者取用,请用P、V原语实现爸爸、儿子、女儿三个并发进程的同步。

选项

答案在本题中,应设置三个信号量s,So,Sa,信号量s表示盘子是否为空,其初值为1;信号量So表示盘中是否有橘子,其初值为0;信号量Sa表示盘中是否有苹果,其初值为0。同步描述如下: int S=1: int Sa=0: int So=0: main( ) { eobegin father( );/*父亲进程*/ son( );/*儿子进程*/ daughter( );/*女儿进程*/ eoend } father( ) { while(1) { P(S); 将水果放入盘中; if(放入的是橘子)V(So); else?V(Sa); } }son( ) { while(1) { P(So); 从盘中取出橘子; V(S); 吃橘子; } } daughter( ) { whi.1e(1) { P(Sa); 从盘中取出苹果; V(S); 吃苹果; }

解析
转载请注明原文地址:https://kaotiyun.com/show/5rvR777K
0

最新回复(0)