词条 | 事件对象 |
释义 | 事件对象(event object )事件对象和互斥对象(参见百度百科互斥对象http://baike.baidu.com/view/1769610.htm),一样都属于内核对象,它包含一个使用计数,一个用于标识该事件是一个自动重置还是一个人工重置的布尔值,和另一个用于指定该事件处于已通知状态还是未通知状态的布尔值。 由上面所述,可见事件对象可分为两种,一种是人工重置的,另一种是自动重置的。当人工重置的事件得到通知时,等待该事件的所有线程均变为可调度线程。而当一个自动事件得到通知时,等待该事件的所有线程中只有一个线程变为可调度线程。 创建一个事件对象,可以调用Windows API中的CreateEvent。它可以创建一个有名的或匿名的事件对象,函数原型如下HANDLE CreateEvent( LPSECURITY_ATTRIBUTESlpEventAttributes, BOOLbManualReset, BOOLbInitialState, LPCTSTR lpName ); 第一参数lpEventAttributes是一个指向SECURITY_ATTRIBUTES结构指针,由它决定该函数返回的句柄是否能够被子进程继承,如果为NULL,则不能被继承。通常指定为NULL(即默认的安全机制)。 第二参数bManualReset,若指定为TRUE,则创建一个人工重置的事件对象,此时可以利用函数 BOOL ResetEvent(HANDLE hEvent)人工重置其状态为无信号的;若指定为FALSE,系统将创建一个自动重置对象,系统将自动将其状态置为无信号的。 第三参数 bInitialState,若为TRUE则初始化创建的事件对象为有信号的(signaled),否则将创建的事件对象初始化为无信号的(nonsignaled)。 第四参数 lpName, 若指定为NULL,则创建一个匿名的事件对象。 返回值,如果函数成功,将返回一个该函数创建的事件对象的句柄。如果创建的事件对象是有名的,并且在调用该函数前,已经有一个同名的事件对象创建了,那么该函数将返回一个指向已存在的事件对象的句柄,并且调用GetLastError(void)函数时,将返回ERROR_ALREADY_EXISTS;如果函数调用失败,那么它将返回NULL。 |
随便看 |
|
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。