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,因為 ...