文章
7
粉丝
80
获赞
0
访问
67
为了描述三人植树过程的同步互斥关系,定义以下信号量并说明其作用及初值,再通过 wait() 和 signal() 操作实现流程:
信号量定义及初值
1. mutex_shovel (互斥信号量)
- 作用:控制铁锹的互斥使用(甲挖坑、乙填土时需独占铁锹)。
- 初值: 1 (初始铁锹可用)。
2. mutex_bucket (互斥信号量)
- 作用:控制水桶的互斥使用(丙浇水时需独占水桶)。
- 初值: 1 (初始水桶可用)。
3. hole_available (同步信号量)
- 作用:表示可挖的树坑数量(最多3个),确保树坑数不超过3。
- 初值: 3 (初始可挖3个坑)。
4. hole_ready (同步信号量)
- 作用:甲挖好坑后通知乙可以放树苗和填土。
- 初值: 0 (初始无坑可用)。
5. plant_ready (同步信号量)
乙(放树苗、填土)的流程:
c
while (1) {
wait(hole_ready); // 等待甲挖好坑
wait(mutex_shovel); // 申请铁锹
放树苗并填土;
signal(mutex_shovel); // 释放铁锹
signal(plant_ready); // 通知丙树苗已种好
}
&nbs...
登录后发布评论
暂无评论,来抢沙发