有一个仓库可以存放 A、 B 两种物品, 每次只能存入一件物品(A 或 B)。 假定存储空间无限大, 但要求:
-n<A的件数-B的件数<m,其中n、m都是正整数。
使用 PV 操作描述物品 A 和物品 B 的入库过程。
使用信号量 mutex 控制两个进程互斥访问临界资源(仓库), 使用同步信号量 Sa 和 Sb(分别代表产品A 和产品 B 的入库计数器) 满足条件-n<Sa-Sb<m。 代码如下:
SemaphoreSa, Sb, mutex;
Sa=m-1;
Sb=n-1;
mutex=1;
process_A( ) {
while(1) {
P(Sa);
P(mutex) ;
A 产品入库;
V(mutex) ;
V(Sb) ;
}
}
process_B( ) {
while(1) {
P(Sb);
P(mutex) ;
B 产品入库;
V(mutex) ;
V(Sa) ;
}
}