仓库管理(同步与互斥)

题目:有个仓库可以存放A和B两种产品,但要求:

(1)每次只能存放一种产品

(2)-N<A产品数量-B产品数量<M

其中,N和M都是正整数,使用P,V操作描述产品A与B的入库过程


分析:

本问题存在以下同步和互斥问题。

(1)两个产品入库进程不能同时进行,所以仓库的入口是一个临界资源,两种产品的入库进程需要互斥。设互斥信号量mutex,初值为1;

(2)两种产品的数量满足关系式-N<A产品数量-B产品数量<M,当A产品数量-B产品数量>=M时,A产品入库进程停止,当B产品数量-A产品数量>=n,B产品入库进程停止,

设置两个信号量Sa,Sb,Sa表示仓库中还可以存放A产品的数量,Sb表示仓库中还可以存放B产品的数量,一开始仓库中两种产品的数量都是0,所以Sa=N-1,Sb=M-1,

semaphore mutex=1,Sa=N-1,Sb=M-1;

main()

{

cobegin

A产品入库进程

{

i=0;

while(1)

{

P(Sa);

P(mutex);

A产品入库

V(mutex);

V(Sb);

}

}

B产品入库

{

j=0;

while(1)

{

P(Sb);

P(mutex);

B产品入库

V(mutex);

V(Sa);


}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值