PV操作每日一题-黑白棋子问题(变式)

黑白棋子问题(变式)⚫⚪


一、问题描述

有一个盒子中放有数量相等的黑白棋子各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
    }
}

三、碎碎念

不多说啦,只是给了执行顺序和棋子数量,溜啦~

猜你喜欢

转载自blog.csdn.net/liangsena/article/details/121410304