HANDLE CreateEvent(
LPSECURITY_ATTRIBUTES lpEventAttributes,
BOOL bManualReset,
BOOL bInitialState,
LPCSTR lpName
);
lpEventAttributes:指向SECURITY_ATTRIBUTES结构体,此结构体决定函数的返回句柄是否可以让子进程继承。如果这个参数为NULL,这个句柄是不能继承的。一般情况下,这个参数设置为NULL。
bManualReset:创建一个手动重置事件(TRUE),还是创建一个自动重置事件(FALSE)。
手动置位事件相当于教室门,教室门一旦打开(被触发),所以有人都可以进入直到老师去关上教室门(事件变成未触发)。
自动置位事件就相当于医院里拍X光的房间门,门打开后只能进入一个人,这个人进去后会将门关上,其它人不能进入除非门重新被打开(事件重新被触发),即重新使用SetEvent()。
人工重置方式的时候,一旦内核对象得到通知,所有等待该内核对象的线程都变为可调度线程,等待CPU分配时间,如果程序没有主动将该内核置为未通知状态,则内核对象将一直处于通知状态,所有等待该内核对象的线程也将一直处于可调度状态。若要将该内核对象置为未通知状态,需要程序主动去做这件事,即主动将内核对象置为未通知状态。;
自动重置方式的时候,一旦内核对象变为通知状态,则所有等待该内核对象的线程只有一个线程变为可调度线程,等待CPU分配执行时间,然后该内核对象有马上自动重置成未通知状态。WaitForSingleObject()返回。
bInitialStat