複数のMFCアプリケーションから同一のファイルを読み書きする必要があります。
この場合はアプリケーション間の排他制御なので、
ミューテックスを使わないといけないのだろうと思っているのですが、
ファイル読み書き関数()
{
CMutex mutex(FALSE, _T("適当なミューテックス名"));
CSingleLock lock(&mutex, TRUE);
ファイルを読み書き;
}
というような2行を追加するだけで構わないものなのでしょうか。
ネットでソースを探してみると、CMutexがメンバ変数になっていたり、
CSingleLockを使っていなかったり、MFCのクラスを使っていなかったりで、
上記のような使いかたをしている例があまりなく、
これでも正しいものなのか確信が持てずにいます。
このへんの使いかたにお詳しいかたにお聞きできればと思います。
「...というような2行を追加するだけで構わないものなの」
か否かはやってみればわかることやないかと。
もちろん簡単なテストプログラムでは確認しています。
ただ、テストプログラムでは確認できないパターンもあるでしょうし、
テストプログラムでは大丈夫だったけど実際の環境では発生したなんていう経験もありますし、
やってみて「大丈夫そうだな」では恐くて見切り発車できないのです。
そのため、このへんのクラスを使いこなされているかたにお聞きできればと思っています。
当該ファイルを利用する全アプリケーションに亘り、ファイルの読み書きがこの関数を介してのみ行われていることが保証できるなら、まず問題なし、と考えます。
ありがとうございます。
上記の2行を書くだけでよいのですね。
この手のレースコンディションが絡む問題への対応機能は、
どうしても自前のテストプログラムだけでは確信が持てないところなので、
詳しいかたの意見をお伺いできて助かりました。
ツイート | ![]() |