免费注册 查看新帖 |

Chinaunix

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

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

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

如果你非要每个线程负责一个篮子。。。。那就给每个篮子分配一个条件变量吧,这样激活的时候,你就可以用指定的线程去处理了
但是,有点蛋疼
你应该可以有更好的方案,不用每个线程只能负责一个篮子。。。。。

论坛徽章:
0
32 [报告]
发表于 2013-01-19 18:20 |只看该作者
本帖最后由 iw1210 于 2013-01-19 18:21 编辑

我现在做服务器程序,接收很多客户端发来的数据然后处理,每个链接可以比作刚才的篮子吧

论坛徽章:
0
33 [报告]
发表于 2013-01-19 18:30 |只看该作者
回复 32# iw1210

篮子是有了。。。但是并不需要使用条件变量啊,既然使用多线程了,就是用正常阻塞io接口就是了,该阻塞就阻塞,让内核去通知

论坛徽章:
0
34 [报告]
发表于 2013-01-19 18:46 |只看该作者
单从需求上去考虑,如果想在调用signal前就想知道调用哪个线程,我觉得至少在用户层面是无法实现的,在调用signal后,可以考虑让激活的线程将ID放到一个大家都知道的地方,由另外一个线程来读取。

论坛徽章:
0
35 [报告]
发表于 2013-01-20 13:34 |只看该作者
我现在做服务器程序,接收很多客户端发来的数据然后处理,每个链接可以比作刚才的篮子吧

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
36 [报告]
发表于 2013-01-21 21:21 |只看该作者
本帖最后由 yulihua49 于 2013-01-21 21:28 编辑
iw1210 发表于 2013-01-20 13:34
我现在做服务器程序,接收很多客户端发来的数据然后处理,每个链接可以比作刚才的篮子吧

我现在也做服务器程序,也接收很多客户端发来的数据然后处理,做得多了,怎么没发现这个需求?
好好看看文档,pthread_cond_signal是有使用条件的,在很多场合信号是被丢弃的。被激活的次序是不定的。
不过我发现在LINUX里,按先进先出,在solaris里按后进先出。

换句话说,我认为你这个需求是不合理的,完全可以采用其它方法。

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
37 [报告]
发表于 2013-01-21 21:24 |只看该作者
一个队列, 一个条件变量, 一个锁, 谁闲着谁干, 没什么难点的.

看一个UNIX环境高级编程里关于条件变量的应用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP