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

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

      • 一、问题描述
      • 二、问题求解
      • 三、碎碎念


一、问题描述

有一个盒子中放有数量相等的黑白棋子各100枚,现在用自动分拣系统将黑白棋子分开,系统中有两个进程P1和P2。P1负责白棋子的分拣,P2则负责黑棋子的分拣,两者必须交替进行分拣,按黑先白后的次序进行,且分拣结束前不得停止。用PV操作解决该问题。


二、问题求解

semaphore flag1=0;
semaphore flag2=1;
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
    }
}

三、碎碎念

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

你可能感兴趣的:(操作系统,笔记,PV操作,操作系统,电子科大,考研,820)