免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2510 | 回复: 2
打印 上一主题 下一主题

主线程与子线程效率处理问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-02-20 10:23 |只看该作者 |倒序浏览
现在要处理并发的大容量消息,消息都是通过消息队列传送过来(只是消息头)
  而且消息有优先级设定,优先级高先处理。

现在有两套方案:
1.开启一个主线程 event loop,以及数个子线程,所有消息发送到主线程消息队列后,进行消息头的判断,然后将消息挂入指定子线程的消息链表,唤醒此子线程进行处理;
2.不需要主线程,各个子线程创建私有消息队列,提供消息头解析函数,各个消息来源函数发送消息前调用,然后将消息直接发送到子线程上。

请比较一下上面两种模式哪种效率更高一些,可靠性呢。而且还要考虑到互斥的问题。

论坛徽章:
0
2 [报告]
发表于 2006-02-20 13:11 |只看该作者
消息有类型区分吧,是不是一个线程处理某一类型的消息。
你的优先级是起怎么实现呢?是让线程(处理某一类型的消息)拥有不同的优先级还是只是让消息拥有优先级。
如果你不用主线程来分发消息,那么你怎么把消息分派到各个分线程呢?

[ 本帖最后由 xb_parasite 于 2006-2-20 13:13 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2006-02-21 16:00 |只看该作者
原帖由 xb_parasite 于 2006-2-20 13:11 发表
消息有类型区分吧,是不是一个线程处理某一类型的消息。
你的优先级是起怎么实现呢?是让线程(处理某一类型的消息)拥有不同的优先级还是只是让消息拥有优先级。
如果你不用主线程来分发消息,那么你怎么把消息 ...


  确实是某一线程处理一类消息,但这一类消息中的消息也有优先级之分;
  消息拥有优先级,个别线程自然也可以有优先级;
如果不用主线程来分发消息,可以给每个线程创建私有队列,然后其余产生消息的各个(进程)线程直接将消息发送到指定的队列

不要主线程的作法,减少了消息的一次传递分发,以及主线程的唤醒过程;
但是也增加了队列的资源消耗,以及产生消息的各个进程(线程)的任务量,需要进行消息解析;

因此这两种方案在研究中
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP