麵包師問題

2021-10-24 13:29:57 字數 760 閱讀 8358

2020/10/8 16:02

麵包師問題。

麵包師有很多麵包和蛋糕,由n個銷售人員銷售。

每個顧客進店後先取乙個號,並且等著叫號。

當乙個銷售人員空閒下來,就叫下乙個號。

試用訊號量的p、v操作設計該問題的同步演算法,給出所用共享變數(如果需要)和訊號量及其初始值,並說明各自的含義。

//偽**

semaphore mutex_c=1;

//互斥區號

semaphore mutex_s=1;

//互斥叫號

semaphore customers =0;

//顧客數

semaphore salesmans = n;

//銷售人員數

int count_c=0;

//顧客取號

int count_s=0;

//銷售人員叫號

int n;

//銷售人員個數

salesman()

}customer()

1.取號和叫號都屬於互斥行為,不能同時又兩個顧客取號,也不能同時有兩個銷售人員叫號,因此取號和叫號都要在臨界區。

2.要有空閒的銷售人員顧客才能消費,所以要等銷售人員釋放資源後,顧客才能消費,否則阻塞。

3.對於取號,不管有沒有空閒的銷售人員都可以取號,因此p(mutex_c)在p(salesman)前面,但是要有銷售人員要有顧客才能叫號,因此p(mutex_s)在p(customers)後面。

理髮師多執行緒實現 麵包師多程序實現

理髮師問題的實現,多執行緒。有乙個理髮師,一把理髮椅和4把供等候理髮的顧客坐的椅子。如果沒有顧客,則理髮師便在理髮師椅子上睡覺 當乙個顧客到來時,必須喚醒理髮師進行理髮 如果理髮師正在理髮時又有顧客來到,則如果有空椅子可坐,他就坐下來等,如果沒有空椅子,他就離開。為理髮師和顧客各編一段程式實現他們的...

Java 麵包師與消費者2(傳送執行緒與接收執行緒)

執行緒協作 採用訊號量和同步方法使傳送執行緒與接收執行緒同步執行 加鎖 訊號量 isempty pv操作 notify 和wait public class bufferlock catch interruptedexception e value i 當value空,value獲得值 isempt...

分麵包問題

include include define inf 1 30 using namespace std int ways 21 21 21 ways w h m 表示的是寬為w,高為h,切了m刀之後的,最大正方的最小面積 而我們想要求的,就是 ways w h m 1 邊界條件是 w h m,因為 ...