人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

セマフォの質問です(Windows、C++)

<前提条件>
複数のプロセスで1つのファイルに書込を行う為にセマフォを使用して
使用権限を制限しています。

ここで1つのプロセスが、HungUPしたとします。

この場合、この状態を検知した監視プロセスは動作を復帰させる為に
このプロセスを一度殺して再立ち上げを行う動作を行うとします。

<質問>
単純に殺すと、プロセスがセマフォを握ったままの可能性が、有ります
これを回避する為、殺す前にそのプロセスが握っているセマフォを全て
解放する必要が有ると思われるのですが、これは可能でしょうか?
可能な場合は、その手法を教えて下さい

●質問者: gin106
●カテゴリ:コンピュータ インターネット
✍キーワード:C++ Windows セマフォ ファイル プロセス
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● pyopyopyo
●35ポイント

エラー処理のような細かい制御は、Mutexを使った方が良いかも知れません。

サンプルコードがあります

http://nienie.com/~masapico/api_CreateMutex.html

◎質問者からの返答

・・・・・


2 ● lizy
●35ポイント ベストアンサー

Semaphoreを使用する限り、難しいというか不可能ではないかと思われます。

Incrementing Semaphores on process termination

プログラムの構造上、単一のプロセスからのみのアクセスでよいのであれば、Semaphoreの代わりにMutexを使ってみてはどうでしょうか。Mutexであれば、ロックを保持したスレッドが終了してしまった場合でもロックが自動的に解放されます(WaitForSingleObjectでロック待ちをしている側にはWAIT_ABANDONEDで通知される)


If a thread terminates without releasing its ownership of a mutex object, the mutex object is considered to be abandoned. A waiting thread can acquire ownership of an abandoned mutex object, but the wait function will return WAIT_ABANDONED to indicate that the mutex object is abandoned.

Mutex Objects (Windows)

◎質問者からの返答

・・・・

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ