sqlite vs共享内存应用vs ipc vs?

时间:2012-09-17 18:00:13

标签: sqlite ipc shared-memory named-pipes

我甚至不确定正确的术语,所以让我从我的目标开始:拥有一个简单的应用程序(“数据管理器”),它只会从文件中读取大量数据到内存中,并且然后将这些数据的片段提供给名为“Data Lapper”的单个多线程应用程序,或者提供给Data Lapper的多个实例。

Data Doler只需要启动并读取数据块一次,所以我希望它至少坚持到世界末日。 Data Doler应该只是闲置,等待Data Lapper连接并开始请求数据。 Data Doler将始终在具有>的多核机器上运行。 50千兆字节的内存。

数据是静态且只读的,并且它被编入索引,以便所有Data Lapper需要做的是为Data Doler提供一个内存地址,它会立即返回所请求数据的确切片段。

Data Doler可以用任何语言编写(C,C ++,AtariBasic等)。

我有Data Lapper的C源代码,所以我连接Data Doler的方式是完全开放的。

我已经开始自学SqLite,共享内存应用程序,命名管道,ipc等等。但我希望有人可以通过告诉我应该吠叫哪棵树,或者我是否可以节省一些时间我对这些东西很无能,我最好还是留在门廊上。

1 个答案:

答案 0 :(得分:0)

根据吞吐量和数据的持续时间,可能会有一些比滚动自己更简单的解决方案。

如果符合您的要求,memcached之类的内容会非常轻松。它在整个网络上都在使用。

如果您是手工制作代码解决方案,可以考虑boost interprocess。 IPC非常合理。