【问题标题】:Linux multi process communication multiple producers one consumerLinux多进程通信多生产者一消费者
【发布时间】:2016-02-12 16:56:52
【问题描述】:

我需要在 C++ 上构建类似于客户端-服务器应用程序的东西。目标是使用多个线程跟踪多个进程(跟踪函数执行)并将这些数据收集到按线程 ID 划分的文件中。

现在我已经在 POSIX 消息队列上实现了这一点(服务器侦听队列并从生产者那里收集数据),但运行速度非常慢。关于在 Linux 平台(C++ 语言)上实现的任何其他想法。该任务的最佳沟通方式是什么?顺便说一句,一个线程范围内的数据顺序对我来说非常敏感。

【问题讨论】:

    标签: c++ linux multithreading ipc interprocess


    【解决方案1】:

    几个想法:

    1) 使用快速的发布-订阅系统。 Aeron 就是这种消息传递系统的一个例子。

    2) 您可以让所有客户写入一个分类帐。然后添加一个读取器进程,轮询分类帐以获取新数据聚合/处理结果。

    有几种方法可以实现这样的账本,一个例子是Chronicle-Queue(带有一些针对 v3 的 C++ 实现 - cornelich)。

    【讨论】:

      【解决方案2】:

      Posix 消息队列是内核级别的东西,所以它们很慢。我建议您使用共享内存作为媒体来实现自己的队列 - 我认为,您有一个多进程(而不是多线程)应用程序。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-02-01
        • 1970-01-01
        • 2012-01-10
        • 1970-01-01
        • 2014-10-13
        • 1970-01-01
        • 2023-03-23
        相关资源
        最近更新 更多