|
分類:[C/C++]
Visual C++ 2010 Express を使用しています。
複数のプロセスから共有メモリ(メモリマップドファイル使用)にアクセスするにあたり、 セマフォを使った排他制御を考えています。
CreateSemaphore、OpenSemaphoreの使い分けについて 他のウェブサイトを見ていてもよくわからず、質問させていただきました。 複数のプロセスでCreateSemaphoreをしているプログラム例もありましたが 問題はないのか?という点も気になります。
以下のようなイメージを考えていますが、使い方としてはこれで良いのでしょうか?
1. プロセスが複数あるので、その中の1つを親プロセスとします。
2. 親プロセスでCreateSemaphoreを使ってセマフォオブジェクトを生成、 子プロセスでOpenSemaphoreを使ってセマフォオブジェクトをオープン
3. どのプロセスからでも共有メモリにアクセス(読み込み・書き込み)する際は WaitForSingleObjectを使ってシグナル状態であるかどうかを確認
4. シグナル状態であれば、共有メモリへのアクセスを実行
5. どのプロセスからでも共有メモリへのアクセスが終わったらReleaseSemaphoreを使って解放
|