当前位置:首页 > 网络操作系统(02335) > 正文内容

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

高老师2年前 (2024-03-26)网络操作系统(02335)11

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

在本题中,应设置三个信号量s、So、Sa,信号量S表示盘子是否为空,其初值为1;信号量So表示盘中是否有橘子,其初值为0;信号量Sa表示盘中是否有苹果,其初值为0。同步描述如下: int S=1; int Sa=0; int So=0; main() { father(); son(); daughter(); } father() { while(1) { P(S); 将水果放人盘中; if(放人的是橘子)v(So); else v(Sa); } } son() { while(1) { P(So); 从盘中取出橘子; v(S); 吃橘子; } } daughter() { while(1) { P(Sa); 从盘中取出苹果; v(S); 吃苹果; } }

扫描二维码免费使用微信小程序搜题/刷题/查看解析。

版权声明:本文由翰林刷题小程序授权发布,如需转载请注明出处。

本文链接:https://doc.20230611.cn/post/536998.html

分享给朋友: