事件对象(同步)
事件对象 是一个同步对象,其状态可以通过使用 SetEvent 函数显式设置为信号。 下面是两种类型的事件对象。
对象 | 描述 |
---|---|
手动重置事件 | 一个事件对象,其状态一直保持信号,直到它被 ResetEvent 函数显式重置为非对齐状态。 发出信号时,可以释放随后在 等待函数之一中指定相同事件对象的任意数量的等待线程或线程。 |
自动重置事件 | 在释放单个等待线程之前,其状态保持信号的事件对象,此时系统会自动将状态设置为非对齐状态。 如果没有线程正在等待,事件对象的状态将保持信号。 如果有多个线程正在等待,则选择等待线程。 不要假定先入先出(FIFO)顺序。 内核模式 APC 等外部事件可以更改等待顺序。 |
事件对象可用于将信号发送到指示发生特定事件的线程。 例如,在重叠的输入和输出中,系统在完成重叠作时将指定的事件对象设置为信号状态。 单个线程可以在多个同时重叠的作中指定不同的事件对象,然后使用多对象 等待函数之一 等待任何一个事件对象的状态发出信号。
线程使用 CreateEvent 或 CreateEventEx 函数来创建事件对象。 创建线程指定对象的初始状态,以及它是手动重置还是自动重置事件对象。 创建线程还可以指定事件对象的名称。 其他进程中的线程可以通过在调用 OpenEvent 函数中指定其名称来打开现有事件对象的句柄。 有关互斥体、事件、信号灯和计时器对象的名称的其他信息,请参阅 进程间同步。
相关主题