当前位置:网站首页>PV操作每日一题-黑白棋子问题

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

2022-06-10 10:14:00 liangsena


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

一、问题描述

有一个盒子中放有数量相等的黑白棋子,现在用自动分拣系统将黑白棋子分开,系统中有两个进程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
    }
}

三、碎碎念

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

原网站

版权声明
本文为[liangsena]所创,转载请带上原文链接,感谢
https://blog.csdn.net/liangsena/article/details/121389113