【发布时间】:2012-07-03 13:03:49
【问题描述】:
我有一个向量,它通过我编写的用于收集信息的过程不断更新(大约每秒 5-20 次)新信息。我想编写一个能够检测向量变化的循环,然后读取信息并进行我为该事件编写的适当分析。但是,我知道像这样的多线程会产生很多问题,所以我很好奇做这种事情的最佳方法是什么。
该向量存储在一个公共类中,并且正在通过我们从金融公司获得的提要进行更新(正在更新的信息是期货指数)。
【问题讨论】:
-
为了澄清一些困惑,你能解释一下你的架构吗?这是具有多线程的单个进程还是多个进程?
-
很抱歉,这是多个进程。那是我的错。
-
在进程之间共享数据结构通常(但不总是)比值得的麻烦更多。您可能会更好,例如让您的收集过程将一系列更改写入其自己的标准输出,然后您的分析过程读取它们。这样,您就可以将进程间数据共享的问题转变为确保收集进程永远不会因为其标准输出缓冲区已满而被阻塞的问题。仍然不是微不足道的,但通常是一个更容易的问题。
-
也许您可以使用boost::asio 异步更新提要数据
-
您是否考虑过如何实现 IPC(进程间通信)(共享内存、原始 TCP/IP、命名管道、标准输出、COM、CORBA 等...)?这很可能会影响您将数据读/写到共享结构的方式。
标签: c++ multithreading ipc