1. 某大学的计算机科学系有一名助教(TA)、他在正常办公时间帮助大学生做编程任务。TA的办公室相当小,只有一张书桌、一把椅子和一台电脑。
2. 在TA办公室外的走廊里,有三把椅子;如果TA正在帮助一个学生,那么其他学生坐在那里等待。如果没有学生在办公时间里需要帮助,那么TA坐在桌子边,打个盹。
3. 首先创建n个学生。每个作为单独线程来运行。TA也作为一个单独线程来运行。学生线程在编程与寻求TA帮助之间交替。
4. 如果TA有空,他们将获得帮助。否则,他们会坐在走廊椅子上,或者如果没有椅子可用,将恢复编程并将在以后寻求帮助。
5. 如果学生来时TA在睡觉,学生应采用信号量通知TA。
6. 当TA完成帮助一个学生时,TA应检查走廊上是否有学生在等待帮助。如果有,TA应按顺序帮助这些学生。如果没有,TA可以再小睡。
2021-05-23 16:00:39
3KB
linux
1