如何使用一个进程写入向量并使用另一个进程读取它而不会丢失性能

时间:2012-07-03 13:03:50

标签: c++ multithreading ipc

我有一个不断更新的向量(大约每秒5到20次),我写的一个过程收集信息的新信息。我想编写一个能够检测向量变化的循环,然后读取信息并进行我为该事件编写的相应分析。但是,我知道这样的多线程有很多问题,所以我很好奇这样做的最佳方法是什么。

向量存储在公共类中,并通过我们从金融公司获得的订阅源进行更新(更新的信息是期货指数)。

2 个答案:

答案 0 :(得分:3)

我没有在C ++中看到这样做的方法。如果您使用共享内存,则可以在其中存储vector,但其组件仍将指向本地非共享内存块,从而阻止其共享(您可能能够使用allocator trickery来解决,但我不确定它会起作用。)

boost有一些共享的内存功能但是我从一个问题回忆起来,我发现它有一些缺点。您很可能必须设计自己的共享内存数据结构,并提供一种机制来存储条件变量,以便客户端可以等待它来确定新数据何时可用。

编辑:我发现问题是关于boost::interprocess

Is boost::interprocess ready for prime time?

答案 1 :(得分:-1)

很抱歉,但在这种情况下,我建议更改设计:将矢量设为私有,添加一个将由数据Feed使用的Setter函数(包装push_back()或其他),然后就完成了。 或者我错过了什么?