在一个仓库中可以存放A和B两种产品,要求:
1)每次只能存入一种–互斥访问
2)A产品数量 - B产品数量 < M
3)B产品数量 - A产品数量 < N
其中,M,N是正整数,使用PV操作描述A和B的入库过程。
semaphore mutex = 1;
int countA = 0,countB = 0;
PA:
while(1)
{
if(countA - countB < M - 1 && countB - countA < N)
{
P(mutex);
A产品可以入库;
V(mutex);
countA++;
}
}
PB:
while(1)
{
if(countA - countB < M && countB - countA < N - 1
)
{
P(m