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

    BOOL ReleaseMutex(

    HANDLE hMutex

    );

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

    ? hMutex:Mutex 对象的句柄。

    (4)CMutex

    Mutex 在MFC 中相应的类是CMutex。CMutex 通过构造函数创建一个互斥器对象。当

    某个资源在一个时间只允许一个线程访问的时候,互斥器正好派上用场。

    CMutex 只有一个构造函数CMutex::CMutex,它的函数原型如下:

    CMutex(

    BOOL bInitiallyOwn = FALSE,

    LPCTSTR lpszNcom = NULL,

    LPSECURITY_ATTRIBUTES lpsaAttribute = NULL

    枫叶文学网www.fywxw.com

    第9 章 多线程

    ·241·

    );

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

    ? bInitiallyOwn:指定创建线程是否在CMutex 对象初始创建时访问互斥器控制的资源。

    ? lpszNcom:CMutex 对象的名称。如果有同名的互斥器存在,如果为空,互斥器就没

    有名称。如果和已有的互斥对象同名,构造函数创建一个以存在名称为参考的新的

    CMutex 对象。如果名称和已有的其他同步对象同名,构造将失败。

    ? lpsaAttribute:互斥对象的安全属xìng。

    5.信号量(Semaphore)

    信号量是最具历史的同步机制。信号量是解决producer/conscomr 问题的关键要素。对应

    的MFC 类是CSemaphore。Win32 函数CreateSemaphore()用来产生信号量。ReleaseSemaphore()

    用来解除锁定。Semaphore 的现值代表的意义是目前可用的资源数,如果Semaphore 的现值

    为1,表示还有一个锁定动作可以成功。如果现值为5,就表示还有5 个锁定动作可以成功。

    当调用Wait 等函数要求锁定,如果Semaphore 现值不为0,Wait 马上返回,资源数减1。当

    调用ReleaseSemaphore()资源数加1,当时不会超过初始设定的资源总数。

    (1)CreateSemaphore

    函数CreateSemaphore 用来创建或者打开Semaphore 对象。如果调用成功,函数返回创

    建后的对象句柄。如果同名Semaphore 对象在创建之前就已经存在,则函数返回现有的对象

    的句柄,并且GetLastError 函数返回ERROR_ALREADY_EXISTS。否则返回创建的Semaphore

    对象句柄。如果调用失败,返回空值。它的函数原型如下:

    HANDLE CreateSemaphore(

    LPSECURITY_ATTRIBUTES lpSemaphoreAttributes,

    LONG lInitialCount,

    LONG lMaximumCount,

    LPCTSTR lpNcom

  
上一页 目录 下一页