三個程序互斥使用快取區問題

2021-10-24 12:54:15 字數 558 閱讀 3894

三個程序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的交換順序,否則會出現...