我有一个生成大量数据的应用程序,我希望它可供另一个 C++ 应用程序访问。平台是 RHEL5,如果重要的话是 g++。
以前,我这样做的方法是将数据写入 /dev/shm(基本上是一个 linux 内存驱动器),然后让其他应用程序从那里读取它。
但是,这似乎非常低效,因为有一个 ofstream,然后是一个 ifstream,并将数据重新加载到内存中。此外,将数据作为文本文件存储在内存中似乎比仅将其保存为内存需要更多空间(尽管我不是 100% 确定这是真的)。
我要分享的数据是
vector< vector<struct> > mydata;
我希望其他应用程序能够执行类似的操作
mydata.at(ii).back()
检索它需要的数据。mydata 中实际上会有相当多的数据。如果我将它打印成 CSV 格式的文件,它可能是 10GB。我正在使用的服务器有 24GB 的内存,应该足以处理这个问题。
此外,当第一个应用程序向 mydata 添加更多条目时,会发生这种检索(所以可能存在潜在的竞争条件?)。
C++中有没有办法共享vector<vector> mydata; 两个应用程序之间?如果是这样,最好的实现是什么?如果可能的话,我宁愿避免使用第三方库。