Esto es de MSDN: La palabra clave de bloqueo asegura que un hilo no entra una sección crítica de código mientras otro hilo está en la sección crítica.La confusión acerca de la declaración de bloqueo en C#
¿Tiene una sección crítica tiene por qué ser el mismo que la sección crítica?
O significa: La palabra clave de bloqueo asegura que un hilo no entra cualquier sección crítica vigilado por un objeto de código mientras otro hilo está en cualquier sección crítica vigilado por el mismo objeto. ?
class Program
{
static void Main(string[] args)
{
TestDifferentCriticalSections();
Console.ReadLine();
}
private static void TestDifferentCriticalSections()
{
Test lo = new Test();
Thread t1 = new Thread(() =>
{
lo.MethodA();
});
t1.Start();
Thread t2 = new Thread(() =>
{
lo.MethodB();
});
t2.Start();
}
}
public class Test
{
private object obj = new object();
public Test()
{ }
public void MethodA()
{
lock (obj)
{
for (int i = 0; i < 5; i++)
{
Thread.Sleep(500);
Console.WriteLine("A");
}
}
}
public void MethodB()
{
lock (obj)
{
for (int i = 0; i < 5; i++)
{
Thread.Sleep(500);
Console.WriteLine("B");
}
}
}
}
Se trata más de Gramática que C#, "la" es definitiva, mientras que "a" es indefinida y podría estar refiriéndose a cualquier sección de código. http://www.englishclub.com/grammar/adjectives-determiners-the-a-an.htm – Lloyd