深入浅出Win32多线程程序设计之线程通信(3)

2019-02-15 15:50

HANDLE CreateMutex( LPSECURITY_ATTRIBUTES lpMutexAttributes, // 安全属性结构指针,可为NULL BOOL bInitialOwner, //是否占有该互斥量,TRUE:占有,FALSE:不占有 LPCTSTR lpName //信号量的名称 );

Mutex是核心对象,可以跨进程访问,下面的代码给出了从另一进程访问命名Mutex的例子:

HANDLE hMutex; hMutex = OpenMutex(MUTEX_ALL_ACCESS, FALSE, L\if (hMutex){ … } else{ … }

相关API:

BOOL WINAPI ReleaseMutex( HANDLE hMutex );

使用互斥编程的一般方法是:

void UpdateResource() { WaitForSingleObject(hMutex,…); ...//do something ReleaseMutex(hMutex); }

互斥(mutex)内核对象能够确保线程拥有对单个资源的互斥访问权。互斥对象的行为特性与临界区相同,但是互斥对象属于内核对象,而临界区则属于用户方式对象,因此这导致mutex与Critical Section的如下不同:

(1) 互斥对象的运行速度比关键代码段要慢;

(2) 不同进程中的多个线程能够访问单个互斥对象; (3) 线程在等待访问资源时可以设定一个超时值。

下图更详细地列出了互斥与临界区的不同:


深入浅出Win32多线程程序设计之线程通信(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:微动开关

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: