私は同期(ロック)のために使用するプライベート静的フィールドを持っています。今私は同時に実行したくない2つの機能を持っています。だから私はこのでした:私はオブジェクトにロックすると、単一の関数の並列実行を防ぐことができますことを知っているC#スレッドと同期
public class Synchronization
{
private static object _lock = new object();
public void MethodA()
{
lock (_lock)
{
Console.WriteLine("I shouldn't execute with MethodB");
}
}
public void MethodB()
{
lock (_lock)
{
Console.WriteLine("I shouldn't execute with MethodA");
}
}
}
を、同じ仕事、私は同時に実行するさまざまな方法で同じロックオブジェクトを使用する場合は?単純に、他のスレッドが既にロックされているオブジェクトを別の関数でロックすることはできますか?
? –
また、この方法では、クラスのすべてのインスタンスを同期していることに注意してください。必要がない場合は、ロックオブジェクトの「静的な」部分を削除します。 –
@Andreas MTの理論と実践は難しい - それは有益な提案ではない。 –