我在C ++中有一个处理数据的应用程序。 让我们说:
download dataA - run app to process A
download dataB - run app to process B
...
现在我需要在B运行中访问由A生成的数据。我可以将它们存储在临时文件或数据库中,但它会减慢速度。有没有办法如何在内存中保留A的输出并在B中再次打开它?
我无法下载数据然后运行应用程序,这是一个串行处理。
答案 0 :(得分:1)
这取决于操作系统。在Linux上,您可以将数据存储在共享内存中,即使没有应用程序正在使用它也是持久的。在Windows上还有共享内存,但如果没有应用程序正在使用它,它将自动回收,因此一旦程序A结束,数据将丢失。
答案 1 :(得分:1)
这可以使用共享内存来完成。这取决于您的操作系统。
如果您使用的是Windows: https://msdn.microsoft.com/en-us/library/windows/desktop/aa366551(v=vs.85).aspx
如果您使用的是Linux: https://beej.us/guide/bgipc/output/html/multipage/mmap.html
但还有另一种选择,使用Boost.Interprocess工具: http://www.boost.org/doc/libs/1_60_0/doc/html/interprocess/sharedmemorybetweenprocesses.html