Почему происходит блокировка потоков в приведенном коде - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Есть метод run. Создаются и запускаются 2 потока для вызова этого метода. По моему разумению потоки дойдя до первой 1000 должны были синхронизироваться и выводить каждый по следующей тысяче блокирую друг друга на время вывода. Однако этого не происходит, второй поток досчитав до 1000 блокируется, а первый не включается. Может кто объяснить?
 void run()
{
     count=0;
     do
      {
        lock(this)
         {
           count++;
           Console.WriteLine(count);
           if(count%1000=0)
            { 
               Monitor.Pulse(this);
               Monitor.Wait(this)
            }
          }
       }
while (count<10000)
}

Решение задачи: «Почему происходит блокировка потоков в приведенном коде»

textual
Листинг программы
if(count%1000=0)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.667 из 5
Похожие ответы