ロックをParent
クラスに移動する単純な解決策は、異なる動作です。new Child1().Method1()
とnew Child2().Method1()
を同時に呼び出すことはできません。これらのロックをどのようにリファクタリングするのですか?
以下のコードをリファクタリングする方法はありますか?
abstract class Parent
{
protected abstract Method1();
}
class Child1 : Parent
{
static object staticLock = new object();
public void Method1()
{
lock(staticLock)
{
// Do something ...
}
}
}
class Child2 : Parent
{
static object staticLock = new object();
public void Method1()
{
lock(staticLock)
{
// Do something else ...
}
}
}
私はこれが2つの子クラスだけではないので、これを求めています。実際の問題はより大きくなります。
作品? – Joe
ロックオブジェクトは静的なのはなぜですか? – Domenic
@Domenicこれらのクラスは物理マシンを表し、インスタンスはクライアントであり、いつでも1つのクライアントしかマシンを制御できません –