¿Por qué el bloqueo en el mismo objeto no provoca un punto muerto? [duplicar]
Posible duplicado:
Bloqueos de reingreso en C #
Si escribo un código como este:
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();
}
Me sale como salida:
Foo
Bar
Esperaba que esto se bloqueara, porque Foo adquiere un bloqueo, y luego espera que Bar obtenga el bloqueo. Pero esto no sucede.
¿El mecanismo de bloqueo simplemente permite esto porque el código se ejecuta en el mismo hilo?