多进程调度效率实现问题
做一个事件环,里面需要消息调度,内存的管理,定时器的实现。
因为消息可能来自各个地方,所以决定利用socket。
现在我是开启一个主进程,然后开启一个线程;
在线程上专门接收消息(socket),然后发送到主进程的消息队列上去;
主进程堵塞在消息队列上,定时器利用信号实现。
当收到一个消息时,其处理消息(转发或处理),然后再次堵塞到队列上。
现在就有几个问题:
1.如果在主进程事件环上,我直接利用select来堵塞,来实现消息的接收,
进行消息的处理后,再次来堵塞判断接收,这个效率相比上面的如何
(服务器是多CPU的,如果是单CPU呢);
2.我进程间的通信采用的是socket,这个需要给每个进程一个端口号来区分;
当进程很多时,有什么很好的实现方法。
因为我无法确定两个进程间的某一个时刻的通信量,只能在链路建立后就
一直保持,否则重新链接时间太长,但这样又会造成资源浪费,而且导致
我每次都要去遍历搜索每个标志位。
说起来这个工程,就是要管理内存的分配,定时器的实现,消息的接收。
但现在可能需要的用户比较多,可能最后会有200个进程间通信,而且
是在不同的服务器上。所以性能问题就比较突出,对内存的copy,信号
的可靠性要求也比较高。
现在程序已经实现,但感觉在稳定和性能上还有很大的提高余地。
程序是运行在solaris和linux上的。
请各位指点一下,这种多进程的通信,消息处理的效率问题
谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论