使用Windows API函数CreateEvent()来创建一个事件对象。事件对象是一种同步原语,用于线程间的通信,允许一个线程通知另一个线程某个特定条件已经满足或特定事件已经发生。
函数原型:
Cpp
HANDLE CreateEvent(
LPSECURITY_ATTRIBUTES lpEventAttributes,
BOOL bManualReset,
BOOL bInitialState,
LPCTSTR lpName
);
说明:
lpEventAttributes: 指向SECURITY_ATTRIBUTES结构的指针,用于指定事件对象的安全属性,如是否允许子进程继承此事件句柄。如果不需要这些特性,通常设置为NULL。
bManualReset: 布尔值,指示事件是否为手动重置类型。如果为TRUE,当事件被触发后,即使有多个等待线程被唤醒,事件状态将保持“有信号”状态,直到显式调用ResetEvent()函数将其重置为“无信号”。如果为FALSE,事件为自动重置类型,一旦有一个等待线程被唤醒,事件会自动变为“无信号”,其他等待线程将继续阻塞。
bInitialState: 布尔值,指定事件的初始状态。如果为TRUE,事件创建后即处于“有信号”状态;若为FALSE,则初始为“无信号”状态。
lpName: 事件对象的名称(以空结束的字符串)。如果为非NULL,则创建一个命名事件,可以在同一台计算机上的不同进程中共享。如果为NULL,创建的是一个本地事件,只能在同一进程中访问。
示例:
Cpp
#include <windows.h>