多进程调度效率实现问题

发布于 2022-06-21 06:03:16 字数 1053 浏览 6 评论 0

做一个事件环,里面需要消息调度,内存的管理,定时器的实现。
因为消息可能来自各个地方,所以决定利用socket。

  现在我是开启一个主进程,然后开启一个线程;
  在线程上专门接收消息(socket),然后发送到主进程的消息队列上去;
  主进程堵塞在消息队列上,定时器利用信号实现。
  当收到一个消息时,其处理消息(转发或处理),然后再次堵塞到队列上。
  
  现在就有几个问题:
  1.如果在主进程事件环上,我直接利用select来堵塞,来实现消息的接收,
    进行消息的处理后,再次来堵塞判断接收,这个效率相比上面的如何
    (服务器是多CPU的,如果是单CPU呢);
  2.我进程间的通信采用的是socket,这个需要给每个进程一个端口号来区分;
    当进程很多时,有什么很好的实现方法。
    因为我无法确定两个进程间的某一个时刻的通信量,只能在链路建立后就
    一直保持,否则重新链接时间太长,但这样又会造成资源浪费,而且导致
    我每次都要去遍历搜索每个标志位。

  说起来这个工程,就是要管理内存的分配,定时器的实现,消息的接收。
  但现在可能需要的用户比较多,可能最后会有200个进程间通信,而且
  是在不同的服务器上。所以性能问题就比较突出,对内存的copy,信号
  的可靠性要求也比较高。

  现在程序已经实现,但感觉在稳定和性能上还有很大的提高余地。
  程序是运行在solaris和linux上的。

  请各位指点一下,这种多进程的通信,消息处理的效率问题
  谢谢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文