本文共 653 字,大约阅读时间需要 2 分钟。
某寺庙,有小和尚、老和尚若干。一水桶,有一水缸,由小和尚提水入缸供老和尚饮用。水缸可容10桶水,水取自同一井中。水井径窄,每次只能容一个水桶取水。水桶总数为3。每次入、取缸水仅为一桶,且不可同时进行。试给出有关取水、入水的算法描述。【北京邮电1998】
无论什么问题一定要按照常规去做,所以以一般思维逻辑思考就可以
小和尚肯定是要看缸里面有没有满,如果没有满,就去找水桶,然后就去打水,把水倒到水桶里面,,,,,一般的思维逻辑思考问题就行1.总体来看要写两个进程,小和尚打水,老和尚要喝水
2.水缸的初值要设为 empty=10 水桶的初值要设为tong=3 3.取水缸/倒水往水缸里面 不能同时进行 所以要设置互斥变量 s1=1 4.水井径窄,每次只能容一个水桶取水 所以要设置互斥变量 s2=1 5.老和尚如何能喝水呢所以要设置full=0来判断水桶里面的水p小和尚(){
wait(empty);//看水缸里面的水 wait(tong);//打水的桶 wait(s2) 打水 signal(s2); wait(s1); 往水缸里面倒水 signal(s1); signal(tong); signal(full);}
p老和尚(){ wait(full); wait(tong); wait(s1); 取水; signal(s1); signal(tong); signal(empty); }
转载地址:http://uwyki.baihongyu.com/