问答题
某寺庙,有小、老和尚若干,有一水缸,由小和尚提入水缸供老和尚饮用。水缸可容10桶水,水取自同一井中。水井径窄,每次只能容一个桶取水。水桶总数为3个。每次入缸取水仅为1桶水,且不可同时进行。试给出有关从缸取水、入水的算法描述。
【正确答案】正确答案: semaphore weli=i; //用于互斥地访问水井 semaphore vat=1; //用于互斥地访问水缸 semaphore empty=10; //用于表示水缸中剩余空间能容纳的水的桶数 semaphore fuli=0 ; //表示水缸中的水的桶数 semaphore pail=3; //用于互斥地访问水桶 //老和尚 while(1){ wait(full); wait(pail); wait(vat), 从水缸中打一桶水; Signal(vat), signal(emptY); 喝水; Signal(pall); } //小和尚 while(1){ wait(empty); wait(pall); wait(well), 从井中打一桶水; signal(well); wait(vat); 将水倒入水缸中; signal(vat); Signal(full); Signal(pail); }
【答案解析】