Многопоточность

Сигнализация

Позволяет потоку ждать уведомления или сигнала от одного или нескольких потоков, что бы продолжить исполнение.

Примитив синхронизации AutoResetEvent

Описание

System.Threading.EventWaitHandle представляет событие синхронизации потоков и может быть в сигнальном или несигнальном состоянии. Два важных метода

  • Set - устанавливает сигнальное состояние события, что позволяет продолжить выполнение одному или нескольким ожидающим потокам;
  • Reset - задает несигнальное состояние события, вызывая блокирование потоков; System.Threading.AutoResetEvent является производным от System.Threading.EventWaitHandle и при получении сигнала автоматически сбрасывается в сигнальное состояние после освобождения одиночного потока в состоянии ожидания.

Задача

Реализовать многопоточное консольное приложение которое выводит на консоль бесконечную последовательность строк ping и pong в соответсвии со следующими условиями:

  1. Для вывод ping и pong используются разные потоки
  2. Первым выводится ping
  3. После ping выводится pong
  4. После pong выводится ping

Пример вывода

ping
pong
ping
pong
ping
pong
pong
pong