用信号量实现独木桥问题
1. 基本信息
姓名 | 学号 | 班级 | 是否编译成功 | 是否运行结果正确(逻辑也要正确) | 是否有抄袭 |
---|---|---|---|---|---|
是/否 | 是/否 | 是/否 |
如果代码运行不正确,写报告时,呈现所做的努力,按以下格式来写:
# 2. 做了什么
# 3. 碰到什么样的问题
# 4. 针对遇到的问题,你做了哪些努力
如果运行结果正确,按以下方式来写:
- 结合关键代码,解释代码背后的原理(对于别人不能一眼就能明白你代码要做什么的,你要给出解释)
- 给出测试结果,并解释运行结果
- 文末,再给出完整的代码
以下是代码运行正确的报告格式:
2. 只允许一个人过桥
2.1 变量定义及初值
需要哪些变量,包括普通变量和信号量,各个变量代表的含义及初值是多少
2.2 伪代码
- 写出伪代码,并解释算法
- P(S)操作原语:若信号量S大于0,则S减1,否则进程进入睡眠
- V(S)操作原语:对信号量S的值加1
2.3 编程实现
解释关键代码
2.4 测试
给出你的测试方法及结果。需要体现出没有加锁会出错,加了锁之后,不出错。
注:测试结果,只需要复制文本,以代码的形式插入即可,无须截图。
2.4.1 没有加锁
2.4.2 有加锁
2.5 实验过程中遇到的问题及解决方法
2.6 附完整源代码
3. 允许同方向的人同时过桥
4. 允许东西方向的人同时过桥
5. 挑战:交替通过
两个方向的人,交替通过,这一点在车辆会车的时候,很实用。