有一个仓库存放两种零件A和B,最大库存容量各为m个,有一车间不断取A和B进行装配,每次各取一个。为避免零件锈蚀,遵循先入库先出库原则,有两个供应商分别不断地供应A和B 。为保证齐套和合理库存,当某种零件的数量比另一种的数量超过n(n<m)个时,暂停对数量大的零件进货,集中补充数量少的零件。试用P、V操作正确实现之。
int mutex = 1; //操作仓库的权限
PinA(){
P(mutex);
//入库A零件
V(mutex);
}
PinB(){
P(mutex);
//入库B零件
V(mutex);
}
Pout(){
P(mutex);
//出库A和B零件
V(mutex);
}
int countA = m; //A的库存
int countB = m; //B的库存
int mutex = 1; //操作仓库的权限
PinA(){
P(mutex);
//入库A零件
V(mutex);
}
PinB(){
P(mutex);
//入库B零件
V(mutex);
}
Pout(){
P(countA);
P(countB);
P(mutex);
//出库A和B零件
V(mutex);
V(countB);
V(countA);
}
int emptyA = m; //A的剩余库存容量
int emptyB = m; //B的剩余库存容量
int fullA = 0; //A的库存数量
int fullB = 0; //B的库存数量
int mutex = 1; //操作仓库的权限
PinA(){
P(emptyA);
P(mutex);
//入库A零件;
V(mutex);
V(fullA);
}
PinB(){
P(emptyB);
P(mutex);
//入库A零件;
V(mutex);
V(fullB);
}
Pout(){
P(fullA);
P(fullB);
P(mutex);
//出库A和B零件
V(mutex);
V(emptyB);
V(emptyA);
}
int emptyA = m; //A的剩余库存容量
int emptyB = m; //B的剩余库存容量
int fullA = 0; //A的库存数量
int fullB = 0; //B的库存数量
int Sa = n; //A和B的相差数量
int Sb = n; //Sa和Sb实现AB入库的同步
int mutex = 1; //操作仓库的权限
PinA(){
P(emptyA);
P(Sa);
P(mutex);
//入库A零件;
V(mutex);
V(Sb);
V(fullA);
}
PinB(){
P(emptyB);
P(Sb);
P(mutex);
//入库A零件;
V(mutex);
V(Sa);
V(fullB);
}
Pout(){
P(fullA);
P(fullB);
P(mutex);
//出库A和B零件
V(mutex);
V(emptyB);
V(emptyA);
}
int emptyA = m; //A的剩余库存容量
int emptyB = m; //B的剩余库存容量
int fullA = 0; //A的库存数量
int fullB = 0; //B的库存数量
int Sa = n; //A和B的相差数量
int Sb = n; //Sa和Sb实现AB入库的同步
int mutex = 1; //操作仓库的权限
main(){
PinA();
PinB();
Pout();
}
PinA(){
P(emptyA);
P(Sa);
P(mutex);
//入库A零件;
V(mutex);
V(Sb);
V(fullA);
}
PinB(){
P(emptyB);
P(Sb);
P(mutex);
//入库A零件;
V(mutex);
V(Sa);
V(fullB);
}
Pout(){
P(fullA);
P(fullB);
P(mutex);
//出库A和B零件
V(mutex);
V(emptyB);
V(emptyA);
}
原文:https://www.cnblogs.com/wasi-991017/p/12961352.html