まず、各 sos コマンドのヘルプとパラメーターを取得するためのコマンドはありwindbg
ますか?
!syncblk
第二に、出力を理解したい
Index SyncBlock MonitorHeld Recursion Owning Thread Info SyncBlock Owner
201 05b9493c 979 1 05bc1040 bcc 45 022f3490 System.Collections.ArrayList
2875 05b4c914 1 1 17b99e10 1af8 290 024862d8 MyClass
2945 05b4b66c 1 1 17d1a290 12c0 752 02482940 MyClass
MonitorHeld
が保持するモニターの数を示しますsynblk
。1 は書き込み用、2 つは読み取り用ですが、残りの列は何を意味するのでしょうか?
C# コードがあるとします
MyClass MyObj;
MyObj = new MyClass();
今私がするなら
lock (MyObj)
{
}
syncblk
所有者の列には「MyClass」が表示されますか? 同様に、この!SyncBlk
コマンドを実行すると、正確には何が表示されますか? lock()
andMonitor.Enter
とMutex
() およびその他のロック機構の数を表示していますか?