事件对象(同步)

事件对象 是一个同步对象,其状态可以通过使用 SetEvent 函数显式设置为信号。 下面是两种类型的事件对象。

对象 描述
手动重置事件 一个事件对象,其状态一直保持信号,直到它被 ResetEvent 函数显式重置为非对齐状态。 发出信号时,可以释放随后在 等待函数之一中指定相同事件对象的任意数量的等待线程或线程
自动重置事件 在释放单个等待线程之前,其状态保持信号的事件对象,此时系统会自动将状态设置为非对齐状态。 如果没有线程正在等待,事件对象的状态将保持信号。 如果有多个线程正在等待,则选择等待线程。 不要假定先入先出(FIFO)顺序。 内核模式 APC 等外部事件可以更改等待顺序。

 

事件对象可用于将信号发送到指示发生特定事件的线程。 例如,在重叠的输入和输出中,系统在完成重叠作时将指定的事件对象设置为信号状态。 单个线程可以在多个同时重叠的作中指定不同的事件对象,然后使用多对象 等待函数之一 等待任何一个事件对象的状态发出信号。

线程使用 CreateEventCreateEventEx 函数来创建事件对象。 创建线程指定对象的初始状态,以及它是手动重置还是自动重置事件对象。 创建线程还可以指定事件对象的名称。 其他进程中的线程可以通过在调用 OpenEvent 函数中指定其名称来打开现有事件对象的句柄。 有关互斥体、事件、信号灯和计时器对象的名称的其他信息,请参阅 进程间同步

使用事件对象