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