900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 某寺庙 有小和尚 老和尚若干。有一水缸 由小和尚用水桶从井中提水入缸 老和尚用水

某寺庙 有小和尚 老和尚若干。有一水缸 由小和尚用水桶从井中提水入缸 老和尚用水

时间:2023-02-15 17:52:48

相关推荐

某寺庙 有小和尚 老和尚若干。有一水缸 由小和尚用水桶从井中提水入缸 老和尚用水

和尚取水问题

某寺庙,有小和尚、老和尚若干。有一水缸,由小和尚用水桶从井中提水入缸,老和尚用水桶从缸里取水饮用。水缸可容30桶水,水取自同一井中。水井径窄,每次只能容一个水桶取水。水桶总数为5个。每次入、取缸水仅为1桶,且不可以同时进行。试用P、V操作给出小和尚、老和尚动作的算法描述。

题目解析

n个小和尚从井里面提水进程之间互斥,用 mutex1 来表示;n个小和尚将水倒在缸里、n个老和尚从缸里面取水,这些进程互斥,用 mutex2 来表示;不管是谁要使用水桶都要确认空闲水桶的数量,用 amount 来表示;用 full 来表示水缸里面有几桶水,用 empty 来表示水缸里面还能放几桶水;

代码

semaphore mutex1=1,mutex2=1;semaphore amount=5,empty=30,full=0;void yong monk i(i=1,2,3,,,n) (){while(TRUE){P(empty);p(amount);P(mutex1);从井里打水;V(mutex1);P(mutex2);往缸里面倒水;V(mutex2);V(amount);V(full); }}void old monk i(i=1,2,3,,,n) (){while(TRUE){P(full);P(amount);P(mutex2);从缸里面取水使用;V(mutex2);V(amount);V(empty); }}void mian(){cobeginyoung monk i(i=1,2,3,,,n) ();old monk i(i=1,2,3,,,n) ();coend}

某寺庙 有小和尚 老和尚若干。有一水缸 由小和尚用水桶从井中提水入缸 老和尚用水桶从缸里取水饮用。水缸可容30桶水 水取自同一井中。水井径窄 每次只能容一个水桶取水。水桶总数为5个。每次入 取缸水仅为

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。