重複の可能性:
C#での再入可能ロック
このようなコードを書くと:
class Program {
static void Main(string[] args) {
Foo();
Console.ReadLine();
}
static void Foo() {
lock(_lock) {
Console.WriteLine("Foo");
Bar();
}
}
static void Bar() {
lock(_lock) {
Console.WriteLine("Bar");
}
}
private static readonly object _lock = new object();
}
私は出力として取得します:
Foo
Bar
Fooがロックを取得し、Barがロックを取得するのを待つため、これがデッドロックになると予想しました。しかし、これは起こりません。
コードが同じスレッドで実行されるため、ロックメカニズムは単にこれを許可しますか?