免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: iw1210
打印 上一主题 下一主题

[C] 在等待条件信号的线程队列中,怎么能知道如果一调用信号函数就会激活的线程ID? [复制链接]

论坛徽章:
0
21 [报告]
发表于 2013-01-19 17:26 |只看该作者
sqfasd 发表于 2013-01-19 17:17
回复 17# iw1210

去网上搜个生产者消费者的程序,好好学习去吧。


我最讨厌这种回答问题的方式。现在不是在学习么?谁还不知道“生产者消费者”,你觉得“生产者消费者”和我说的方案有什么不同?请言简意赅地说说。。。

论坛徽章:
0
22 [报告]
发表于 2013-01-19 17:27 |只看该作者
回复 20# iw1210

谁空闲不是他自己本身最清楚么,工人只要反复循环“有活?干活。没活?休眠”,如果有休眠着的,主人就负责随便叫醒一个

论坛徽章:
0
23 [报告]
发表于 2013-01-19 17:29 |只看该作者
回复 22# liuspring6


    好吧,不说主人递砖了。主人有雇了一个人专门递砖,这个人怎么知道哪个人空闲?

论坛徽章:
0
24 [报告]
发表于 2013-01-19 17:31 |只看该作者
另外,你是否理解我所说的“哪个人空闲就去主人那里看看有没有砖要搬”,这个和“主人递砖”,最终目的是相似的,但中间过程是攻和受的区别

论坛徽章:
0
25 [报告]
发表于 2013-01-19 17:34 |只看该作者
回复 22# liuspring6


    补充:每个人都要到递砖人指定位置搬砖。

论坛徽章:
0
26 [报告]
发表于 2013-01-19 17:34 |只看该作者
回复 21# iw1210

你脾气还不小呢。。。。
言简意赅的说,就是:你描述的方案就是一个生产者消费者模型,没看出来为什么需要获取第一个被唤醒的线程

论坛徽章:
0
27 [报告]
发表于 2013-01-19 17:41 |只看该作者

RE: 在等待条件信号的线程队列中,怎么能知道如果一调用信号函数就会激活的线程ID?

本帖最后由 iw1210 于 2013-01-19 17:44 编辑

回复 26# sqfasd

跟“生产者消费者”还有区别的,递砖人要叫空闲的搬砖人到指定位置搬,所以在搬之前,递砖人要首先知道哪个人空闲。
我问的问题就是递砖人怎么知道哪个人空闲?求最好的方案,我首先想到的是在发送唤醒信号前知道哪个线程空闲,这样就可以提前把“搬砖位置”告诉这个线程,一唤醒它,它就主动去搬啦,你不能唤醒它后再告诉它搬砖位置吧,那样早不知它跑哪去了,线程都跑那么快!
   

论坛徽章:
0
28 [报告]
发表于 2013-01-19 17:54 |只看该作者
回复 27# iw1210

你为什么非要在生产者线程里指定要哪个消费者去处理呢?
那些消费者线程既然都是由用同一个处理函数,为什么不在那个处理函数里面去区分这些数据啊?
你真该写个伪代码,把逻辑理清楚

论坛徽章:
0
29 [报告]
发表于 2013-01-19 17:59 |只看该作者
回复 28# sqfasd


    实际需求就是这样的,简单说吧,一排篮子,递砖人只是往篮子里放砖,搬砖人到递砖人指定的篮子里搬,篮子不能拿走。。。。。。。。。
唉,描述挺麻烦的。就告诉我有没有提前知道哪个线程空闲的方法就行了啊~~~~~~~~~~~~

论坛徽章:
0
30 [报告]
发表于 2013-01-19 18:03 |只看该作者
首先,到指定位置去搬就是个扯蛋的做法,想当然的需求,远不如大家都到固定地方取。

退一步讲,你真要这么做,就是我提了2次都被你无视的“自己管理线程池”,简单点说,空闲线程队列,每个线程一个cond和mutex,线程做完工作告诉线程池将自己加入空闲队列,通知也就可以指定线程通知
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP