BadCats
@BadCats

Создание объекта блокировки?

всем привет, имеется такой пример:
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.
Возможно точно такое же "разделение" объекта блокировки между двумя критическими секциями, если эти секции будут находится разных классах?
Если такое возможно, то попрошу привести пример кода с разъяснением к нему, а если нет - то почему?
  • Вопрос задан
  • 150 просмотров
Пригласить эксперта
Ответы на вопрос 1
Если будет лочиться один и тот объект в разных классах, то да, такое разделение возможно.
В комментарии к вопросу Михаил уже указал как это можно сделать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы