文章
14
粉丝
0
获赞
0
访问
1.0k
解:
Semaphore mutex1 = 1; //水井互斥访问
Semaphore mutex2 = 1; //水缸互斥访问
Semaphore empty = 10; //水缸剩余容量
Semaphore full = 0; //水缸当前水量
Semaphore bucket = 3; //可用水桶数量
void young() { //小和尚
while(true){
P(empty); //检查水缸是否有空位
P(bucket); //申请一个水桶
P(mutex1); //申请访问水井
打水;
V(mutex1); //释放水井访问
P(mutex2); //申请访问水缸
将水倒入水缸;
V(mutex2); //释放水缸访问
V(full); //水缸水量+1
V(bucket); //归还水桶
}
}
void old() { //老和尚
while(true){
P(full); //检查水缸是否有水
P(bucket); //申请水桶
P(mutex2); //申请访问水缸
从水缸取水;
V(mutex2); //释放水缸访问权
V(empty); //水缸空位+1
喝水;
V(bucket); //归还水桶
}
}
评分及理由
(1)得分及理由(满分8分)
学生答案与标准答案基本一致,正确使用了信号量机制解决了水井、水缸的互斥访问问题,以及水缸容量和水桶数量的同步问题。具体分析如下:
登录后发布评论
暂无评论,来抢沙发