请输入您要查询的百科知识:

 

词条 事件对象
释义

事件对象(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条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/1/9 18:48:09