次の例外を時折散発的にスローするコードに問題があります。
boost interprocess: no such file or directory
同じファイル セットにアクセスするコードは複数ありますが、一部のコードはリアルタイムでファイルを別のディレクトリに移動します。ファイルを処理および移動するコードは、ファイルロックを使用しています。
boost::interprocess::file_lock
コードで行われるプロセスは次のとおりです。1) プログラム 1 は、ロックしたいファイルが存在することを確認します。2) 上記のチェックに合格すると、file_lock を使用してファイルをロックします。
問題は、ステップ 1 と 2 の間で、プログラム 2 がプログラム 1 が作業しているファイルに対して boost::filesystem::rename を使用して移動できることだと思います。
両方のプログラムが同時に実行されている場合、これを防ぐ方法はありますか?