首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >线程和信号量解决方案

线程和信号量解决方案
EN

Stack Overflow用户
提问于 2013-12-15 21:03:08
回答 1查看 827关注 0票数 3

我有一个问题需要解决,以下是问题的解释:

  • 我有许多学生的线
  • 我只有一根老师的线
  • 老师只能同时帮助一个学生。
  • 学生应该打电话给老师寻求帮助,所以当第一个学生来到助教时,其他同学如果发现助教很忙,就得在椅子上等着,只有3把椅子。
  • 其他同学,如果发现椅子满了,就得过一会儿才能回来。
  • 如果老师没有帮助学生,他会在椅子上检查学生,如果没有学生,他就睡觉(什么也不做)。

这个问题必须使用线程和信号量来实现。

EN

回答 1

Stack Overflow用户

发布于 2013-12-15 21:12:06

建议:

( 1)我会有一个老师线程和N个学生线程(就像您一样)。

2)我想要一个信号量。

3)我将有一个椅子数组(您的“队列”);每个元素初始化为-1。

4)每当老师看到一个学生时,他都会锁上数组,挑选一个学生,“清理”椅子,并打开数组。

5)每次学生想要等待时,他都会检查是否有一张免费的椅子,锁上数组,“设置”椅子,并打开数组。

6)我会"malloc()",然后初始化,一旦你知道你会有多少学生,椅子就会排列。

7)如果是C++,“教师”、“学生”和“椅子”都是班级。

IMHO..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20599776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档