明确感知并发运行时的手动重置事件。
语法
class event;
成员
公共构造函数
| 名称 | 描述 |
|---|---|
| ~event 析构函数 | 销毁事件。 |
公共方法
| 名称 | 描述 |
|---|---|
| reset | 将事件重置为未发出信号状态。 |
| set | 发出事件信号。 |
| wait | 等待事件变为发出信号状态。 |
| wait_for_multiple | 等待多个事件变为信号通知状态。 |
公共常量
| 名称 | 描述 |
|---|---|
| timeout_infinite | 指示等待永远不应超时的值。 |
注解
有关详细信息,请参阅同步数据结构。
继承层次结构
event
要求
标头:concrt.h
命名空间: 并发
事件
构造新事件。
_CRTIMP event();
~event
销毁事件。
~event();
注解
析构函数运行时,预计事件上没有等待的线程。 在线程仍处于等待状态时允许析构事件会导致未定义的行为。
复位/重设/还原
将事件重置为未发出信号状态。
void reset();
set
发出事件信号。
void set();
注解
发出事件信号会导致等待该事件的任意数量的上下文变为可运行。
timeout_infinite
指示等待永远不应超时的值。
static const unsigned int timeout_infinite = COOPERATIVE_TIMEOUT_INFINITE;
wait
等待事件变为发出信号状态。
size_t wait(unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE);
参数
_Timeout
指示等待超时之前的毫秒数。值 COOPERATIVE_TIMEOUT_INFINITE 表示没有超时。
返回值
如果满足等待,则返回值 0;否则,返回值 COOPERATIVE_WAIT_TIMEOUT 以指示等待超时,而事件不会变为发出信号状态。
重要
在通用 Windows 平台 (UWP) 应用中,不要对 ASTA 线程调用 wait,因为此调用会阻塞当前线程并且会导致应用变得无响应。
wait_for_multiple
等待多个事件变为信号通知状态。
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 参数中提供的数组中有任何事件变为发出信号状态将满足等待。
_Timeout
指示等待超时之前的毫秒数。值 COOPERATIVE_TIMEOUT_INFINITE 表示没有超时。
返回值
如果满足等待,则为满足等待条件的 _PPEvents 参数中提供的数组中的索引;否则,返回值 COOPERATIVE_WAIT_TIMEOUT 以指示等待超时而不满足条件。
注解
如果参数 _FWaitAll 设置为值 true 以指示所有事件必须变为发出信号状态以满足等待,则函数返回的索引没有其他特殊意义,除了一个事实,即它不是 COOPERATIVE_WAIT_TIMEOUT 值。
重要
在通用 Windows 平台 (UWP) 应用中,不要对 ASTA 线程调用 wait_for_multiple,因为此调用会阻塞当前线程并且会导致应用变得无响应。