一、问题描述
有一个盒子中放有数量相等的黑白棋子各100枚,现在用自动分拣系统将黑白棋子分开,系统中有两个进程P1和P2。P1负责白棋子的分拣,P2则负责黑棋子的分拣,两者必须交替进行分拣,按黑先白后的次序进行,且分拣结束前不得停止。用PV操作解决该问题。
二、问题求解
semaphore flag1=1;
semaphore flag2=0;
int blackNum=100;
int whiteNum=100;
P2()
{
while(1)
{
P(flag2);
P(blackNum);
分拣一个黑棋子;
V(flag1); //发信号给P1
}
}
P1()
{
while(1)
{
P(flag1);
P(whiteNum);
分拣一个白棋子;
V(flag2); //发信号给P2
}
}
三、碎碎念
不多说啦,只是给了执行顺序和棋子数量,溜啦~