互斥量可以对相关资源代码进行保护,在多线程同步中用的很多。互斥量在MFC和Qt中都有封装好的类,win32中的mutex和MFC,Qt的mutex的使用略有不同。
win32的互斥量使用方法:创建互斥量、等待事件通知 、执行受保护的代码 、释放互斥量 、关闭互斥量句柄
相关API介绍如下
(1)CreateMutex 创建互斥量
HANDLE
WINAPI
CreateMutexW(
_In_opt_ LPSECURITY_ATTRIBUTES lpMutexAttributes,
_In_ BOOL bInitialOwner,
_In_opt_ LPCWSTR lpName
);
#ifdef UNICODE
#define CreateMutex CreateMutexW
各参数说明
参数1:表示安全控制,一般直接传入NULL。
参数2:用来确定互斥量的初始拥有者。如果传入TRUE表示互斥量对象内部会记录创建它的线程的线程ID号并将递归计数设置为1,由于该线程ID非零,所以互斥量处于未触发状态。如果传入FALSE,那么互斥量对象内部的线程ID号将设置为NULL,递归计数设置为0,这意味互斥量不为任何线程占用,处于触发状态。
参数3:用来设置互斥量的名称,在多个进程中的线程就是通过名称来确保它们访问的是同一个互斥量。
返回值
成功则返回一个表示互斥量的句柄,失败返回NULL。