Questo è da MSDN: La parola chiave di bloccaggio assicura che un thread non entra una sezione critica di codice, mentre un altro thread è in la sezione critica.Confusione circa l'istruzione lock in C#
una sezione critica deve essere uguale a la sezione critica?
O significa: La parola serratura assicura che un filo non entri qualsiasi sezione critica sorvegliata da un oggetto di codice mentre un altro thread è in qualsiasi sezione critica protetta dallo stesso oggetto. ?
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");
}
}
}
}
È più su Grammar che C#, "il" è un valore definitivo mentre "a" è indefinito e potrebbe riferirsi a qualsiasi sezione di codice. http://www.englishclub.com/grammar/adjectives-determiners-the-a-an.htm – Lloyd