多线程同步,1个老板和5个员工上厕所的问题

爱蹄子的羊头 2013-01-05 03:03:12
我们Process 公司 , 有 1个老板MainThread 和5个员工 WorkThread;

公司只有一个厕所. 老板和员工都要上这个厕所.

有的时候上厕所的人比较多, 所以里面的人就要锁上厕所的门 CreateEvent

这个时候 无论是老板还是员工都得在外面等着. WaitForSingleObject

当里面的员工方便结束的时候, 有没有办法让老板先上厕所?

如果老板这个时候也在排队的话.即使老板是刚来的.

...全文
709 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
budded 2013-01-06
  • 打赏
  • 举报
回复
simonhehe 2013-01-06
  • 打赏
  • 举报
回复
引用 5 楼 kiboisme 的回复:
if WaitForSingleObject(...)<>WAIT_OBJECT_0 then //其它事件或者错误处理 else begin if 经理.Waiting then 经理.Do else CurrentObj.Do end; To 4楼 Sleep用来抢资源效率非常低.会导致CPU不停的切换线程.
谢谢, 我晚上优化一下
haitao 2013-01-06
  • 打赏
  • 举报
回复
都由一个调度线程来调度,就好办了
蓝色光芒 2013-01-06
  • 打赏
  • 举报
回复
if WaitForSingleObject(...)<>WAIT_OBJECT_0 then //其它事件或者错误处理 else begin if 经理.Waiting then 经理.Do else CurrentObj.Do end; To 4楼 Sleep用来抢资源效率非常低.会导致CPU不停的切换线程.
爱蹄子的羊头 2013-01-06
  • 打赏
  • 举报
回复
我给所有员工外面加了个 临界区, 现在老板一定是第一了. 老板 事件锁 解锁 员工 临界区 事件锁 解锁 解临界区. 这样 所有员工都在厕所外面等着. 老板在小便池等着. 自然是老板先.. 员工一出来. 老板就进去了. 这个时候另外才轮到一个新员工进去..
simonhehe 2013-01-06
  • 打赏
  • 举报
回复
被楼主的问题勾住了 哈哈 看下链接的内容, 是否符合你的业务要求 http://blog.csdn.net/simonhehe/article/details/8471320
hsfzxjy 2013-01-05
  • 打赏
  • 举报
回复
如此生动!!!
xhz8000 2013-01-05
  • 打赏
  • 举报
回复
看看线程的优先级你懂的!

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧