PV操作每日一题-黑白棋子问题

黑白棋子问题棋子⚫⚪

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


温馨提示,这个题目的代码可能很简单,但是有点绕,类似于前面的橘子苹果问题的交替放入水果。好啦,开始!

一、问题描述

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

二、问题求解

:这么去理解,把P1和P2看作两个资源,互斥进行访问,与橘子苹果问题正好相反。

semaphore flag1=1;
semaphore flag2=0;

P1()
{
    while(1)
    {
        P(flag1);
        分拣一个白棋子;
        V(flag2);           //发信号给P2
    }
}

P2()
{
    while(1)
    {
        P(flag2);
        分拣一个黑棋子;
        V(flag1);           //发信号给P1
    }
}

三、碎碎念

理解之后,看完代码是不是感觉题目超级简单~

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