字体
第(2/5)页
关灯
   存书签 书架管理 返回目录
  ? Exchange:指定jiāo换值。

    ? Comperand:指定要和目标值比较的值。

    互锁cāo作的使用方法非常简单,主线程和辅助线程对同一个全局变量进行cāo作,通过利

    用InterlockedIncrcomnt 函数达到同步的目的。

    2.临界区(Critical Section)

    临界区是一段程序代码,在任何时候都只能被一个线程使用。如果有多个线程同时访问

    临界区,这时只能有一个线程进入,其他线程则等待,直到临界区被释放。与其他同步方法

    不同的是,临界区只能在单个进程内使用。使用临界区的时候要避免长时间锁住一份资源。

    进入临界区后必须尽快地离开,释放资源。如果是主线程(GUI 线程)要进入一个没有被释

    放的临界区,将会出现错误。

    (1)InitializeCriticalSection

    在使用临界区之前,必须先进行初始化。可以调用Win32 API 函数InitializeCriticalSection

    初始化一个临界区对象。它的函数原型如下:

    VOID InitializeCriticalSection(

    LPCRITICAL_SECTION lpCriticalSection

    );

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

    ? lpCriticalSection:指向临界区对象的指针。

    (2)DeleteCriticalSection

    相应的,当需要释放临界区资源时,可以调用Win32 API 函数DeleteCriticalSection 来实

    现,它的函数原型如下:

    VOID DeleteCriticalSection(

    LPCRITICAL_SECTION lpCriticalSection

    );

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

    ? lpCriticalSection:指向临界区对象的指针。

    (3)EnterCriticalSection

    Win32 API 函数EnterCriticalSection 等待直到得到临界区对象的使用权,当调用线程得到

    临界区对象的使用权时,函数返回。它的函数原型如下:

    VOID EnterCriticalSection(

    LPCRITICAL_SECTION lpCriticalSection

    );

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

    枫叶文学网www.fywxw.com

    第9 章 多线程

    ·237·

    ? lpCriticalSection:指向临界区对象的指针。

    (4)LeaveCriticalSection

    Win32 API 函数LeaveCriticalSection 用来释放临界区的所有权,它的函数原型如下:

    VOID LeaveCriticalSection(

    LPCRITICAL_SECTION lpCriticalSection

    );

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

    ? lpCriticalSection:指向临
上一页 目录 下一页