デッドロック対策
2004年9月11日(土曜日)
デッドロック対策
デッドロックの原因は全く分かりません。クリティカルセクションの中で別のロックを要求しているような部分はないし……。
とあえず後ろ向きの対策として、ロックが必要なところで頑張りすぎないようにしてみました。
try{ if(!Monitor.TryEnter(target, DataConst.LockInterval)) throw new LockFailException("ロックに失敗しました。"); ……クリティカルセクション…… } finally { Monitor.Exit(target); }
こんな感じ。ちなみに LockFailException はカスタム例外です。DataConst.LockInterval の値は定数で、とりあえず 5000 にしてあります。5秒待ってロックできなかったら諦めて、例外を吐いて終了する感じ。
- 「デッドロック対策」にコメントを書く
関連する話題: プログラミング / C# / えび日記 / hatomaru.dll