我有一个向量,它通过我为收集信息而编写的过程不断更新(大约每秒 5-20 次)新信息。我想编写一个能够检测向量变化的循环,然后读取信息并进行我为该事件编写的适当分析。但是,我知道像这样的多线程会产生很多问题,所以我很好奇做这样的事情的最佳方法是什么。
该向量存储在公共类中,并通过我们从金融公司获得的提要进行更新(正在更新的信息是期货指数)。
我有一个向量,它通过我为收集信息而编写的过程不断更新(大约每秒 5-20 次)新信息。我想编写一个能够检测向量变化的循环,然后读取信息并进行我为该事件编写的适当分析。但是,我知道像这样的多线程会产生很多问题,所以我很好奇做这样的事情的最佳方法是什么。
该向量存储在公共类中,并通过我们从金融公司获得的提要进行更新(正在更新的信息是期货指数)。
我看不到在 C++ 中执行此操作的方法。如果您使用共享内存,您可以将其存储vector
在其中,但它的组件仍将指向本地的非共享内存块,从而阻止它被共享(您可能可以使用分配器技巧,但我不是确定它会起作用)。
boost
具有一些共享内存功能,但正如我从一个问题中回忆的那样,我找不到它有一些缺点。您很可能必须设计自己的共享内存数据结构并提供一种机制来在其中存储条件变量,以便客户端可以等待它来确定何时有新数据可用。
编辑:我发现了这个问题boost::interprocess
:
抱歉,在这种情况下,我建议更改设计:将向量设为私有,添加一个 Setter 函数(包装 push_back() 或其他),供您的数据馈送使用,然后您就完成了。还是我错过了什么?