共有メモリをブーストするためにリアルタイムデータを書いています。当初、私はこの私がSHMにアクセスするたびに使用していた:デバッグモードでブーストプロセス間共有メモリを開放するopen_or_createは毎回例外をスローする
boost::interprocess::managed_shared_memory segment(boost::interprocess::open_or_create, "MySharedMemory",20000000);
を、私は、この呼び出しは、常にこの例外をスローすることが判明:
First-chance exception at 0x00007FFA30BB95FC in testerud.exe: Microsoft C++ exception: boost::interprocess::interprocess_exception at memory location 0x000000000550E1C0.
しかし、私は開くことができたとプッシュ共有メモリへの私のデータ。私はこの問題に回り込むことが分かった。私はプロセスの開始時に別の関数をopen_or create
に作成し、毎回書き込むのにopen_only
を使用しました。例外はありませんでした。
私はこれの背後にある理由が不思議です。ブーストドキュメントから
"デバッグモードでは、この呼び出しは常にこの例外をスローすることがわかりました" - あなたがそれを宣言すると、どのように関連するのですか? – sehe
また、なぜ他にスレッド/プロセスが存在しない場合でも、毎回セグメントを開くのはなぜですか?セグメントを開いたままにしておきます。それ以外の場合、「リアルタイム」は間もなく「犬のゆっくり」と言ってもいいでしょう。 – sehe
はい、ここには関係ありません。私はそれを削除します。ありがとう。 – brownKnight