作業系統理髮師問題P V操作

2021-10-25 07:43:22 字數 475 閱讀 7751

理髮店裡有一位理髮師、一把理髮椅和n 把供等候理髮的顧客坐的椅子。如果沒有顧客,理髮師便在理髮椅上睡覺;當乙個顧客到來時,它必須叫醒理髮師;如果理髮師正在理髮時又有顧客來到,那麼,如果有空椅子可坐,顧客就坐下來等待,否則就離開理髮店。

(解法一):

可以從題中發現,我們在需要的訊號量有:

顧客數量(開局沒有顧客)customers=0;

理髮師(開局睡覺) barbers=0;

等待人數 waiting=0;

互斥訊號(人數不能同時增加減少)mutex=1;

椅子的數量 chairs;

理髮師:

void barbers(void)

}

顧客:

void customer(void)				//執行理髮

else //沒有多的椅子,顧客離開

}

理髮師問題c 作業系統

這是關於理髮師問題的c 程式,如果對其中函式有不理解的可以看我另一篇部落格程序相關函式彙總解釋,對照著看,可能方便你理解 include include include using namespace std define chairs 5 椅子數目 define max count 10 顧客最多...

作業系統經典問題 理髮師問題

理髮師問題描述如下 理髮店包含一間接待室和一間工作室,有一名理髮師,接待室內有n n 1 把椅子,而工作室只有1把椅子。如果沒有顧客,理髮師就去睡覺 如果理髮師在睡覺 則顧客會喚醒他 如果理髮師在忙且接待室有空閒椅子,那麼此顧客會坐在其中1把空閒的椅子上等待 如果來時所有椅子都有人,那麼顧客離去。請...

作業系統 同步互斥 理髮師睡覺問題

理髮店有一位理髮師,一把理髮椅和n把供等候的顧客坐的椅子。如果沒有顧客,理髮師在理髮椅上睡覺 當有乙個顧客到來時,他必須先喚醒理髮師 如果顧客來時理髮師正在理髮,如果有空椅子,坐下等待,否則離開。用p,v操作解決上述問題中的同步和互斥關係。將顧客看作n個生產者,理髮師是1個消費者。理髮師和椅子是臨界...