Escribí un código simple (adjunto) y no entiendo por qué el bloqueo en algún bloque no está bloqueando el alcance.¿Por qué el bloqueo de este código no funciona?
El código:
object locker = new object();
private void foo(int i)
{
Console.WriteLine(string.Format("i is {0}", i));
lock(locker)
{
while(true)
{
Console.WriteLine(string.Format("i in while loop is {0}", i)) ;
foo(++i);
}
}
}
espero que la llamada para el método foo en el bucle while estará esperando hasta que la taquilla será de liberación (alcance vestuario) - pero todas las llamadas del foo con arg de ++ puedo ingresar al bloque de taquillas.
Creo que es el mismo hilo por lo que no debe bloquearse (tal vez alguien lo sepa con más detalle) – V4Vendetta
Definitivamente aprendí algo nuevo en este caso, +1 –
Si ya estás en el baño, y la puerta está ya bloqueado, y pones un * segundo * en la puerta, * todavía estás en el baño. * –