2016-03-20 8 views
1

私はC++でデータを処理するアプリケーションを持っています。 が言うことができます:C++ - アプリケーションが終了した後にメモリを保持する

download dataA - run app to process A 
download dataB - run app to process B 
... 

今私は、私は、一時ファイルやDBに保存することができますA.によって生成されたデータへのアクセスもを持っているBの実行に必要な、それは物事を遅くします。 Aの出力をメモリに保存してBで再び開く方法はありますか?

私はデータをダウンロードできないし、アプリケーションを実行することはできません、それはシリアル処理です。

+0

あなたが上で手の込んだことができます"それは物事を遅くする"ビット?どれくらいのデータについて話していますか?どのような種類のデータですか?そして、もしそれが "シリアル処理"であれば、パイプと通常の標準出力/入力を使うことを考えましたか? –

+0

それは約10GBのデータ、浮動小数点の2Dマトリックス –

+0

あなたが少なくとも10GBまたはメモリを利用できる場合を除いて、実際にファイルを使用する方法はありません。 –

答えて

1

OSによって異なります。 Linuxでは、データを共有メモリに格納することができます。共有メモリは、アプリケーションを使用していなくても永続的です。 Windowsでは共有メモリもありますが、アプリケーションを使用していない場合は自動的に再利用されるため、プログラムAが終了するとデータは失われます。

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

関連する問題