三个人一起植树,甲挖坑,乙放树苗入坑并填土,丙负责为新种树苗浇水。步骤依次为:挖树坑,放树苗,填土和浇水。现在有铁锹和水桶各一个,铁锹用于挖树坑,填土。水桶用于浇水。当树坑数量小于3时,甲才可以挖树坑。设初始坑=0,铁锹水桶均可用,定义尽可能少的信号量,用wait ()和signal ()操作描述植树过程中三人的同步互斥关系,并说明所用信号量的作用及其初值。
semaphoer mutex...
用户登录可进行刷题及查看答案
semaphoer mutexT=1;//对铁锹的使用需要互斥访问 semaphore sk=3; //可挖的树坑数量,初值为 3; samaphore empty=0;//可使用的树坑数量 semaphore water=0;//需要浇水的树苗 甲() { while (1) { wait(sk); wait(mutexT); 挖坑; signal(mutexT); signal(empty); } } 乙() { while (1) { wait(empty); wait(mutexT); 入坑并填土; signal(mutexT); signal(sk); signal(water); } } 丙() { while (1) { wait(water); 浇水; } }
采用PV操作书写也可以
登录后提交答案
暂无评论,来抢沙发