всем привет, имеется такой пример:
class Program
{
static object locker = new object();
static void WriteSecond()
{
for (int i = 0; i < 20; i++)
{
lock (locker)
{
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine(new string(' ', 10) + "Secondary");
Console.ForegroundColor = ConsoleColor.Gray;
Thread.Sleep(100);
}
}
}
static void Main()
{
Console.SetWindowSize(80, 45);
ThreadStart writeSecond = new ThreadStart(WriteSecond);
Thread thread = new Thread(writeSecond);
thread.Start();
for (int i = 0; i < 20; i++)
{
lock (locker)
{
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("Primary");
Console.ForegroundColor = ConsoleColor.Gray;
Thread.Sleep(100);
}
}
// Delay.
Console.ReadKey();
}
}
как видно, создается две критические секции lock, и они используют один объект блокировки в двух разных методах - одна критическая секция в методе WriteSecond, а вторая в методе Mian() , но обе эти секции все равно находятся в пределах одного класса - класса Program.
Возможно точно такое же "разделение" объекта блокировки между двумя критическими секциями, если эти секции будут находится разных классах?
Если такое возможно, то попрошу привести пример кода с разъяснением к нему, а если нет - то почему?