私の質問はここにある他の多くの質問のように聞こえるかもしれませんが、私が見つけられなかった風味があります.
次のロジックを理解しようとしています
汎用オブジェクト
public class GenericClass
{
public static void DoSomething(Object lockObj)
{
lock(lockObj)
{
// do something here
}
}
}
クラスA
internal class A
{
private static _aLock = new Object();
public void Do_A_Thing()
{
GenericClass.DoSomething(_aLock);
}
}
クラスB
internal class B
{
private static _bLock = new Object();
public void Do_B_Thing()
{
GenericClass.DoSomething(_bLock);
}
}
私の説明が正しいかどうかを確認したいだけです:
クラス「A」の複数のスレッドが「genericClass」メソッド「DoSomething」のコードに同時にアクセスしようとすると、このメソッドはクラス「A」の 1 つを除くすべてのインスタンスにロックされます。ただし、クラス「B」の単一のインスタンスは、いつでも実行を続行できます。クラス「B」にも複数のインスタンスが実行される場合、それらはクラス「A」のロックに干渉しません。
これは、上記の内容に基づいて正しいですか?