繁体   English   中英

Linux多进程通信多个生产者一个消费者

[英]Linux multi process communication multiple producers one consumer

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

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

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

一些想法:

1)使用快速的发布订阅系统。 Aeron是此类消息传递系统的一个示例。

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

有多种方法可以实现这种分类帐,其中一个例子是Chronicle-Queue (针对v3的某些C ++实现-cornelich )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM