0

Я пытаюсь написать решение для монитора спящего парикмахера, используя два парикмахера и трех клиентов, которые либо ждут только для парикмахера 1, парикмахера 2, либо могут не волновать, какой парикмахер режет волосы ,Руководство для решения для спального парикмахера

Я надеялся, что для руководства по этой проблеме -

Мои мысли настолько далеко, что алгоритм будет использовать один список для ожидающих клиентов и могут использовать такие процедуры, как

try_to_get_haircut()

if_not_first()

wake_up_barber()

wait_for_haircut()

ответ

0

Ниже приводится одно решение для парикмахера, и я надеюсь, что оно поможет вам.

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;}}