进程的同步和互斥反映了_信号量如何解决进程的同步和互斥问题

解决同步与互斥问题的一些案例:一个吃水果问题。

问题描述:桌上有一只盘子,每次只能放一个水果,爸爸专向盘中放苹果,妈妈专向盘中放桔子,儿子专等吃盘里的桔子,女儿专等吃盘里的苹果。只要盘子空,则爸爸或妈妈可向盘中放水果,仅当盘中有自己需要的水果时,儿子或女儿可从中取出,那么四人之间的同步关系是什么?如何实现四人正确活动的程序?

解:四人之间的关系:

1爸爸,妈妈都要使用盘子,所以两者是互斥关系; 2爸爸放的苹果,女儿吃,所以两者是同步关系; 3妈妈放的桔子,儿子吃,所以两者也是同步关系。

struct semaphore s,sp,so=1,0,0;

cobegin

void father (void)

{

while(TRUE){

have an apple;  P(s);

put an apple;

V(sp);} }

void mother (void)

{

while(TRUE){

have an orange;

P(s);

put an orange;

V(so);} }

void son (void)

{

while(TRUE){

P(sp);

get an orange;

V(s);

eat an orange;} }

void daught (void)

{

while(TRUE){

P(sp);

get an apple;

V(s);

eat an apple;} }

coend

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值