События со сбросом вручную.

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

ResetEvent(…) – переводит в состояние non-signaled.

SetEvent(…) – переводит в свободное состояние signaled.

Поток перед считыванием с помощью функции ResetEvent(…) переводит в занятое состояние, считывает и освобождает с помощью SetEvent(…). Остальные потоки ждут с помощью функции WaitForSingleObject(…).