睡眠理发监视器解决方案指南



我正在尝试为睡眠理发师问题编写一个监视器解决方案,使用两个理发师和三种类型的客户,他们要么只等待理发师 1、理发师 2,要么可能不在乎哪个理发师剪头发。

我希望在这个问题上得到指导——

到目前为止,我的想法是,该算法将为等待的客户使用单个列表,并且可以使用诸如

try_to_get_haircut()

if_not_first()

wake_up_barber()

wait_for_haircut()

下面是一个理发师解决方案,我希望它能为您提供指导。

monitor sleeping_barber{
 condition wait_for_cust, wait_for_barber ;
 int wait;
 entry barber{
   if (wait == 0) then cwait(wait_for_cust);
   wait = wait - 1;
   csignal(wait_for_barber); }
entry cut_customer_hair(){
 if(wait < seat_num)
 {
    wait = wait + 1;
    csignal(wait_for_cust);
    cwait(wait_for_barber);
    do_haircut();
 }
}
{ wait = 0;}}

相关内容

  • 没有找到相关文章

最新更新