老和尚和小和尚打水問題

2022-02-12 23:26:49 字數 1350 閱讀 6409

某寺廟有小和尚和老和尚若干,水缸乙隻,由小和尚提水入缸供老和尚飲用。水缸可容水10桶,水取自同一口水井中。水井徑窄,每次僅能容納乙隻水桶取水,水桶共三隻。每次放入、取出的水量僅為一桶,試用pv操作寫出小和尚打水、放入水缸、老和尚取水喝的過程。

明確行為物件:小和尚、老和尚

明確臨界區:

水井:小和尚之間互斥

水缸:小和尚、大和尚之間互斥

水桶:小和尚、大和尚之間互斥

明確訊號量:

1.n個小和尚到水井提水時互斥,用mutex1控制

2.小和尚將水放入水缸和老和尚取水互斥,用mutex2控制

3.臨界區是空閒的水桶數量,老和尚和小和尚都要用,用amount控制

4.使用full來表示水缸裡有幾桶水,用empty來表示水缸裡還能放幾桶水

semaphore mutex1=1,mutex2=1;

semaphore amount=5,empty=30,full=0;

void littlemonk i(i=1,2,3,,,n) ()

}void bigmonk i(i=1,2,3,,,n) ()

}void mian()

#include #include #include #include #include #include #define p sem_wait

#define v sem_post

#define mutex1 &mutex1

#define mutex2 &mutex2

#define amount &amount

#define empty &empty

#define full &full

#define n 10

sem_t mutex1,mutex2;

sem_t amount,empty,full;

int littlemonkcount= 0;

int bigmonkcount = 0;

int fullcount = 0;

int sum=50;

void* littlemonk(void *p)

}void* bigmonk(void *p)

}int main()

/** 建立多個小和尚程序 **/

for(j=1;j<=10;j++)

/**觀察結果後關閉程序**/

小和尚打水問題 三個和尚閱讀題答案閱讀題目

三個和尚 閱讀原文 傳說古時候,乙個活潑伶俐l ng l 的小和尚來到山上的一座廟mi o裡。開始,他勤快地挑水,不但自己夠喝,還往菩薩p s 手中的淨瓶裡灌水,淨瓶裡的柳枝活了。不久,來了乙個瘦和尚。他與小和尚為了喝水和挑水的問題發生了爭執zh 誰也不願意吃虧ku 於是,兩人商量一起抬水。後來,又...

掃樹葉的小和尚

有個小和尚,每天早上負責清掃寺廟院子裡的落葉。清晨起床掃落葉實在是一件苦差事,尤其在秋冬之際,每一次起風時,樹葉總隨風飛舞落下。每天早上都需要花費許多時間才能清掃完樹葉,這實在讓小和尚頭痛不已。他一直想要找個好辦法讓自己輕鬆些。後來有個和尚跟他說 你在明天打掃之前先用力搖樹,把落葉統統搖下來,後天就...

小和尚賣石頭的故事

一日,老和尚為了啟發他的徒弟,便給了他一塊非常美麗的石頭叫他去蔬菜市場叫賣。小和尚心裡雖然感覺很奇怪,但仍欣然接受了。臨行前,老和尚笑呵呵地對他的徒弟說 注意,你不要賣掉這塊石頭,只要在菜市場上叫賣一下,看需要多長時間才會有人前來詢問 然後你只要告訴我這塊石頭在蔬菜市場上能賣多少錢便可以了。徒弟雖然...