根据题目中描述的助教和学生的行为 需要两类线程 program 和student 其中 助教的活动有编程和睡觉两个事件 学生有等待和编程两个事件 走廊上有三个椅子 上面坐着等待的学生 学生到后 需判断有没有空闲的椅子 助教决定要教学或睡觉时 也要判断椅子上有没有学生 所以助教和学生之间的关系表现为:
(1)助教和学生之间的同步关系:当助教睡觉时 学生进来需要唤醒助教 当有学生时 助教教其编程 没有的时候助教睡觉
(2)助教和学生之间的互斥关系:由于每次助教只能帮一个学生 且可供等待的椅子只有3把 即助教和椅子是临界资源 所以学生之间是互斥关系
(3)引入三个信号量和一个控制变量:
控制变量waiting用来记录等待的学生数 初值为0;
信号量students用来表示等待的学生 初值为0;
信号量ta用来表示助教 初值为1;
信号量mutex用于互斥 初值为1;">根据题目中描述的助教和学生的行为 需要两类线程 program 和student 其中 助教的活动有编程和睡觉两个事件 学生有等待和编程两个事件 走廊上有三个椅子 上面坐着等待的学生 学生到后 需判断有没有空闲的椅子 [更多]
1