我需要在C ++上构建类似客户端 - 服务器应用程序的东西。目标是使用多个线程跟踪多个进程(跟踪功能执行)并将此数据收集到按线程ID划分的文件中。
现在我已经在POSIX消息队列上实现了这一点(服务器侦听队列并从生产者收集数据),但这种方法效果很慢。关于在Linux平台(C ++语言)上实现的任何其他想法。什么是这项任务的最佳沟通方式?顺便说一句,一个线程范围内的数据顺序对我来说非常敏感。
答案 0 :(得分:1)
Posix消息队列是内核级别的东西,所以它们很慢。我建议你使用共享内存作为媒体来实现自己的队列 - 我认为,你有一个多进程(而不是多线程)应用程序。
答案 1 :(得分:1)
一些想法:
1) 使用快速的pub-sub系统。 Aeron就是这种消息传递系统的一个例子。
2) 您可以让所有客户端写入单个分类帐。然后添加一个读取器进程,轮询分类帐以获取新数据聚合/处理结果。
有几种方法可以实现这样的分类帐,一个例子是Chronicle-Queue(对于v3有一些C ++实现 - cornelich)。