Поделиться через


Класс event

Событие с ручным сбросом, которое явно учитывает Параллельную среду выполнения.

Синтаксис

class event;

Участники

Открытые конструкторы

Имя Описание
~event Деструктор Уничтожает событие.

Открытые методы

Имя Описание
reset; Сбрасывает событие в состояние без сигнала.
установить Сигнализирует о событии.
ждать Ожидает, пока событие станет сигналом.
wait_for_multiple Ожидает передачи сигнала о нескольких событиях.

Открытые константы

Имя Описание
timeout_infinite Значение, указывающее, что время ожидания никогда не должно истечь.

Замечания

Дополнительные сведения см. в разделе "Структуры данных синхронизации".

Иерархия наследования

event

Требования

Заголовок: concrt.h

Пространство имен: конкурентность

событие

Создает новое событие.

_CRTIMP event();

~событие

Уничтожает событие.

~event();

Замечания

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

reset

Сбрасывает событие в состояние без сигнала.

void reset();

набор

Сигнализирует о событии.

void set();

Замечания

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

таймаут_бесконечный

Значение, указывающее, что время ожидания никогда не должно истечь.

static const unsigned int timeout_infinite = COOPERATIVE_TIMEOUT_INFINITE;

подождите

Ожидает, пока событие станет сигналом.

size_t wait(unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE);

Параметры

_Тайм-аут
** Указывает количество миллисекунд до истечения времени ожидания. Значение COOPERATIVE_TIMEOUT_INFINITE означает, что тайм-аут не установлен.

Возвращаемое значение

Если ожидание было удовлетворено, возвращается значение 0 ; в противном случае значение COOPERATIVE_WAIT_TIMEOUT , указывающее, что время ожидания истекло без сигнала события.

Внимание

В приложении на универсальной платформе Windows (UWP) не вызывайте wait на потоке ASTA, так как этот вызов может блокировать текущий поток и привести к зависанию приложения.

ожидание_нескольких

Ожидает передачи сигнала о нескольких событиях.

static size_t __cdecl wait_for_multiple(
    _In_reads_(count) event** _PPEvents,
    size_t count,
    bool _FWaitAll,
    unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE);

Параметры

_PPEvents
Массив событий, который необходимо ожидать. Число событий в массиве указывается параметром count .

count
Количество событий в массиве, указанного в параметре _PPEvents .

_FWaitAll
Если задано значение true, параметр указывает, что все события в массиве, предоставляемом в параметре _PPEvents, должны быть приведены в состояние сигнала для удовлетворения условия ожидания. Если задано значение false, это указывает, что любое событие в массиве, предоставленном в параметре _PPEvents, которое будет сигнализировано, удовлетворит ожидание.

_Тайм-аут
Указывает количество миллисекунд до истечения времени ожидания. Значение COOPERATIVE_TIMEOUT_INFINITE означает, что период ожидания отсутствует.

Возвращаемое значение

Если ожидание было удовлетворено, то это индекс в массиве, указанный в параметре _PPEvents и удовлетворяющий условию ожидания; в противном случае возвращается значение COOPERATIVE_WAIT_TIMEOUT, чтобы указать, что время ожидания истекло без выполнения условия.

Замечания

Если для параметра _FWaitAll задано значение true , указывающее, что все события должны быть сигнализованы для удовлетворения ожидания, индекс, возвращаемый функцией, не имеет особого значения, кроме того, что оно не является значением COOPERATIVE_WAIT_TIMEOUT.

Внимание

В приложении Универсальной платформы Windows (UWP) не вызывайте wait_for_multiple на потоке ASTA, так как этот вызов может блокировать текущий поток и может привести к тому, что приложение становится неотзывчивым.

См. также

Пространство имен параллелизм