字体
第(4/5)页
关灯
   存书签 书架管理 返回目录
(

    DWORD dwDesiredAccess,

    BOOL bInheritHandle,

    LPCTSTR lpNcom

    );

    函数中主要参数的意义如下。

    ? dwDesiredAccess:指定如何cāo作对象。

    ? bInheritHandle:指定返回的句柄是否可以被继承。

    ? lpNcom:事件对象的名称。

    (3)SetEvent,ResetEvent 和PulseEvent

    如果需要修改事件句柄的状态,可以使用SetEvent、ResetEvent 和PulseEvent。其中,

    SetEvent 将事件句柄的状态改为激活状态,如果自动重置事件处于激活状态,在满足了等待

    线程后,它可以被重置。手动重置事件必须调用ResetEvent 函数将事件对象重置为激活状态。

    PulseEvent 函数用来向事件句柄发信号,并在所有的等待线程都被释放后,将事件句柄重置

    为未激活状态。它们的返回值相同,如果调用成功,返回非0 值,否则返回0。它们的函数

    原型如下:

    BOOL SetEvent(

    HANDLE hEvent

    );

    BOOL ResetEvent(

    HANDLE hEvent

    );

    BOOL PulseEvent(

    HANDLE hEvent

    );

    函数中主要参数的意义如下。

    ? hEvent:事件对象的句柄。

    如果不再使用句柄,可以调用Win32API 函数CloseHandle 关闭句柄。函数原型如下:

    BOOL CloseHandle(

    HANDLE hObject

    );

    枫叶文学网www.fywxw.com

    第9 章 多线程

    ·239·

    函数中主要参数的意义如下。

    ? hObject:对象的句柄。

    (4)CEvent

    事件(Event)在MFC 中的相应的类是CEvent。CEvent 的构造函数默认创建一个自动重

    置的事件,而且处于未激发状态。它的成员函数及其作用如表9-6 所示。

    表9-6 CEvent 类的成员函数

    函数名称 作用

    CEvent 构造函数,构造CEvent 对象

    SetEvent 启动事件对象,释放等待线程

    PulseEvent 启动事件对象,释放等待线程,或者重置事件

    对象为未激活状态

    ResetEvent 设置事件对象为未激活状态

    Unlock 释放事件对象

    4.互斥器(Mutex)

    互斥器的功能与临界区相似。区别在于互斥器所花费的时间比临界区多很多,但是互斥

    器是核心对象(后面介绍的Event 和Semaphore 也是核心对象),可以跨进程使用,而且等待

    一个被锁住的互斥器可以设定TIMEOUT,不会像临界区那样无法得知临界区的情况,一直

    等待。

    Win32 提供了创建互斥器Create
上一页 目录 下一页