免费注册 查看新帖 |

Chinaunix

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

[其他] 求推荐:进程调度库、进程间通信库,All 开源,谢谢! [复制链接]

论坛徽章:
14
水瓶座
日期:2014-06-10 09:51:0215-16赛季CBA联赛之江苏
日期:2017-11-27 11:42:3515-16赛季CBA联赛之八一
日期:2017-04-12 14:26:2815-16赛季CBA联赛之吉林
日期:2016-08-20 10:43:1215-16赛季CBA联赛之广夏
日期:2016-06-23 09:53:58程序设计版块每日发帖之星
日期:2016-02-11 06:20:00程序设计版块每日发帖之星
日期:2016-02-09 06:20:0015-16赛季CBA联赛之上海
日期:2015-12-25 16:40:3515-16赛季CBA联赛之广夏
日期:2015-12-22 09:39:36程序设计版块每日发帖之星
日期:2015-08-24 06:20:002015亚冠之德黑兰石油
日期:2015-08-07 09:57:302015年辞旧岁徽章
日期:2015-03-03 16:54:15
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-06-03 11:03 |只看该作者 |倒序浏览
30可用积分
目标平台:linux、unix,如果能支持windows更好(不强求)

进程调度库:
1、基于io的调度,支持select、poll、epoll等
2、支持多线程
3、能提供较高精度的timer
4、性能优秀

只用过libevent和一些项目自带的调度系统{:3_188:}

进程通信库:
1、一对一模式,通信内容易扩展,支持同步、异步(可选择需要ack或不需要ack)
2、一对多模式,支持pubsub功能,支持sync功能(即多进程sync单进程的某一状态)
3、支持多线程
4、性能优秀
5、支持32/64位
6、如果能支持基于板卡间(跨IP)的进程间通信更好(不强求)

使用的是项目自带的进程间通信,和调度绑定、64位支持不好、容易出错{:3_197:}

尽量简单稳定、易入手、易升级、免维护

谢谢!

最佳答案

查看完整内容

符合你要求的东东我第一时间想到两个1、ZeroMQ,支持你提到的所有需求2、ICE,这个东西是一个RPC库,不过你提到的功能都应该有。

论坛徽章:
44
15-16赛季CBA联赛之浙江
日期:2021-10-11 02:03:59程序设计版块每日发帖之星
日期:2016-07-02 06:20:0015-16赛季CBA联赛之新疆
日期:2016-04-25 10:55:452016科比退役纪念章
日期:2016-04-23 00:51:2315-16赛季CBA联赛之山东
日期:2016-04-17 12:00:2815-16赛季CBA联赛之福建
日期:2016-04-12 15:21:2915-16赛季CBA联赛之辽宁
日期:2016-03-24 21:38:2715-16赛季CBA联赛之福建
日期:2016-03-18 12:13:4015-16赛季CBA联赛之佛山
日期:2016-02-05 00:55:2015-16赛季CBA联赛之佛山
日期:2016-02-04 21:11:3615-16赛季CBA联赛之天津
日期:2016-11-02 00:33:1215-16赛季CBA联赛之浙江
日期:2017-01-13 01:31:49
2 [报告]
发表于 2014-06-03 11:03 |只看该作者
符合你要求的东东我第一时间想到两个
1、ZeroMQ,支持你提到的所有需求
2、ICE,这个东西是一个RPC库,不过你提到的功能都应该有。

论坛徽章:
14
水瓶座
日期:2014-06-10 09:51:0215-16赛季CBA联赛之江苏
日期:2017-11-27 11:42:3515-16赛季CBA联赛之八一
日期:2017-04-12 14:26:2815-16赛季CBA联赛之吉林
日期:2016-08-20 10:43:1215-16赛季CBA联赛之广夏
日期:2016-06-23 09:53:58程序设计版块每日发帖之星
日期:2016-02-11 06:20:00程序设计版块每日发帖之星
日期:2016-02-09 06:20:0015-16赛季CBA联赛之上海
日期:2015-12-25 16:40:3515-16赛季CBA联赛之广夏
日期:2015-12-22 09:39:36程序设计版块每日发帖之星
日期:2015-08-24 06:20:002015亚冠之德黑兰石油
日期:2015-08-07 09:57:302015年辞旧岁徽章
日期:2015-03-03 16:54:15
3 [报告]
发表于 2014-06-05 09:59 |只看该作者
这,这个很恼火么?就没大神来讲一讲?

论坛徽章:
14
水瓶座
日期:2014-06-10 09:51:0215-16赛季CBA联赛之江苏
日期:2017-11-27 11:42:3515-16赛季CBA联赛之八一
日期:2017-04-12 14:26:2815-16赛季CBA联赛之吉林
日期:2016-08-20 10:43:1215-16赛季CBA联赛之广夏
日期:2016-06-23 09:53:58程序设计版块每日发帖之星
日期:2016-02-11 06:20:00程序设计版块每日发帖之星
日期:2016-02-09 06:20:0015-16赛季CBA联赛之上海
日期:2015-12-25 16:40:3515-16赛季CBA联赛之广夏
日期:2015-12-22 09:39:36程序设计版块每日发帖之星
日期:2015-08-24 06:20:002015亚冠之德黑兰石油
日期:2015-08-07 09:57:302015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2014-06-05 10:10 |只看该作者
回复 3# windoze

谢谢大神,这就看看去,我就知道个dbus,还没有用过{:3_204:}
   

论坛徽章:
0
5 [报告]
发表于 2014-06-05 13:41 来自手机 |只看该作者
boost吧,会的人多,资料多。

论坛徽章:
14
水瓶座
日期:2014-06-10 09:51:0215-16赛季CBA联赛之江苏
日期:2017-11-27 11:42:3515-16赛季CBA联赛之八一
日期:2017-04-12 14:26:2815-16赛季CBA联赛之吉林
日期:2016-08-20 10:43:1215-16赛季CBA联赛之广夏
日期:2016-06-23 09:53:58程序设计版块每日发帖之星
日期:2016-02-11 06:20:00程序设计版块每日发帖之星
日期:2016-02-09 06:20:0015-16赛季CBA联赛之上海
日期:2015-12-25 16:40:3515-16赛季CBA联赛之广夏
日期:2015-12-22 09:39:36程序设计版块每日发帖之星
日期:2015-08-24 06:20:002015亚冠之德黑兰石油
日期:2015-08-07 09:57:302015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2014-06-05 18:51 |只看该作者
回复 3# windoze

大神你好,我想请问一下:0MQ这种东东有没有办法和libevent这类调度库做绑定?

我简单的看了一下:0MQ使用方法类似TCP/UNIX域这一类,但是TCP/UNIX这一类可以比较简单和调度库做IO绑定,实现reactor模式

而0MQ没有显式的文件描述符,请问好做吗?

0MQ里面有看到类select/poll接口,但是缺少timer机制,所以如果无法和libevent这类共同工作的话,就需要自己实现{:3_188:}

   

论坛徽章:
44
15-16赛季CBA联赛之浙江
日期:2021-10-11 02:03:59程序设计版块每日发帖之星
日期:2016-07-02 06:20:0015-16赛季CBA联赛之新疆
日期:2016-04-25 10:55:452016科比退役纪念章
日期:2016-04-23 00:51:2315-16赛季CBA联赛之山东
日期:2016-04-17 12:00:2815-16赛季CBA联赛之福建
日期:2016-04-12 15:21:2915-16赛季CBA联赛之辽宁
日期:2016-03-24 21:38:2715-16赛季CBA联赛之福建
日期:2016-03-18 12:13:4015-16赛季CBA联赛之佛山
日期:2016-02-05 00:55:2015-16赛季CBA联赛之佛山
日期:2016-02-04 21:11:3615-16赛季CBA联赛之天津
日期:2016-11-02 00:33:1215-16赛季CBA联赛之浙江
日期:2017-01-13 01:31:49
7 [报告]
发表于 2014-06-05 19:27 |只看该作者
回复 6# lxyscls

这个不是大问题吧,在0MQ里实现Timer无非就这点事:
1、起个线程,创建一个PriorityQueue,开一个PUB/SUB channel,可以再开一个REP/REQ channel,用于接收控制命令
2、需要加timer的线程给Timer线程发命令
3、Timer线程按照命令把时间加入PriorityQueue,算好下次**的时间,用这个时间做超时调用zpoll。
4、Timer线程被**时检查以下原因,如果是由于来了控制命令,那就在处理完命令之后,重新计算下超时,继续zpoll,否则就PUB一个Timer消息到PUB/SUB channel

如果你一定要和libevent/libev/asio/...做集成,你可以用zmq_getsockopt(ZMQ_FD, ...)取得0MQ的socket,放在其它框架的event loop里,等到它被signal之后,调用zmq_getsockopt(ZMQ_EVENTS)判断是否有事件,如果有则调用zpoll处理事件,否则继续。

论坛徽章:
14
水瓶座
日期:2014-06-10 09:51:0215-16赛季CBA联赛之江苏
日期:2017-11-27 11:42:3515-16赛季CBA联赛之八一
日期:2017-04-12 14:26:2815-16赛季CBA联赛之吉林
日期:2016-08-20 10:43:1215-16赛季CBA联赛之广夏
日期:2016-06-23 09:53:58程序设计版块每日发帖之星
日期:2016-02-11 06:20:00程序设计版块每日发帖之星
日期:2016-02-09 06:20:0015-16赛季CBA联赛之上海
日期:2015-12-25 16:40:3515-16赛季CBA联赛之广夏
日期:2015-12-22 09:39:36程序设计版块每日发帖之星
日期:2015-08-24 06:20:002015亚冠之德黑兰石油
日期:2015-08-07 09:57:302015年辞旧岁徽章
日期:2015-03-03 16:54:15
8 [报告]
发表于 2014-06-06 10:08 |只看该作者
回复 7# windoze


    这个...多线程的timer,真心“高大上”,迄今为止只接触过单线程的timer(单线程libevent),那个比较简单{:3_188:}

请问您说的是不是基本上可以这么理解:
1、单独使用线程,使用poll计算超时
2、再使用pub/sub通道来发送超时消息,通知其他线程处理超时?

论坛徽章:
0
9 [报告]
发表于 2014-06-06 10:11 |只看该作者
boost的asio、interprocess、thread,再配合RCF就好了嘛,简单易用。

论坛徽章:
44
15-16赛季CBA联赛之浙江
日期:2021-10-11 02:03:59程序设计版块每日发帖之星
日期:2016-07-02 06:20:0015-16赛季CBA联赛之新疆
日期:2016-04-25 10:55:452016科比退役纪念章
日期:2016-04-23 00:51:2315-16赛季CBA联赛之山东
日期:2016-04-17 12:00:2815-16赛季CBA联赛之福建
日期:2016-04-12 15:21:2915-16赛季CBA联赛之辽宁
日期:2016-03-24 21:38:2715-16赛季CBA联赛之福建
日期:2016-03-18 12:13:4015-16赛季CBA联赛之佛山
日期:2016-02-05 00:55:2015-16赛季CBA联赛之佛山
日期:2016-02-04 21:11:3615-16赛季CBA联赛之天津
日期:2016-11-02 00:33:1215-16赛季CBA联赛之浙江
日期:2017-01-13 01:31:49
10 [报告]
发表于 2014-06-06 12:38 |只看该作者
回复 8# lxyscls

对滴,只要处理好Timer thread的开始和结束,其它真不复杂,0MQ本来就在多进程/多线程/多机等多种通信方式上进行了一层统一的抽象,粗略估计一下整个代码不会超过200行。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP