三個程序p1、p2、p3互斥使用乙個包含n(n>0)個單元的緩衝區。
p1每次用produce()生成乙個正整數並用put()送入緩衝區某一空單元中;
p2每次用getodd0從該緩衝區中取出乙個奇數並用countodd0統計奇數個數;
p3每次用geteven()從該緩衝區中取出乙個偶數並用counteven()統計偶數個數。
試用訊號量的p、v操作設計該問題的同步演算法,給出所用共享變數(如果需要)和訊號量及其初始值,並說明各自的含義。
//偽**
semaphore f =1;
//實現對緩衝區的互斥訪問
int odd_num =0;
//奇數個數
int even_num =0;
//偶數個數
int n;
//緩衝區單元數p1(
)else
//該數是偶數
put();
v(f)
;//解鎖}}
}p2()
}}p3(
)}}
好像沒什麼障礙 Excel三個下拉互斥
描述 excel有三個下拉列表,若選擇了其中任意乙個下拉,其他兩個均不可以在選擇。嘗試了很多種辦法,級聯,資料有效性等等,最後都沒實現。老大,最後用vba實現。附上 private sub worksheet change byval target as range dim r as long di...
程序同步的三個經典問題
要求 producer和consumer,二者不能對buffer進行操作 當buffer滿的時候,就不允許producer繼續寫 當buffer空的時候,就不允許consumer繼續讀 訊號量及其初始化 semaphore mutex 1 buffer的鎖 semapore full 0 滿位的數量...
程序同步三個常見問題
生產者 消費者 三個訊號量 empty 緩衝區 空閒 資源數,full 緩衝區 已滿 資源數 保證不會空時消費,滿時生產 保證順序 同步 mutex 代表互斥鎖 保證同一時間只有乙個執行緒可以訪問共享資源 互斥訪問 producer consumer 不能將執行緒裡兩個wait的交換順序,否則會出現...