头文件
<Windows.h>
<process.h>
应用
HANDLE hMutex;
hMutex = CreateMutexA(NULL,//安全属性
FALSE, //互斥量的初始状态
NULL); //命名
WaitForSingleObject(hMutex);
ReleaseMutex(hMutex); //释放互斥量
函数原型
HANDLE CreateMutexA(
PSECURITY_ATTRIBUTES psa,
BOOL bInitialOwner,
PCTSTR pszName);
HANDLE CreateMutexEx(
PSECURITY_ATTRIBUTES psa,
PCTSTR pszName,
DWORD dwFlags, //系统保留,传0
DWORD dwDesiredAccess);
BOOL ReleaseMutex(HANDLE hMutex);
-其中,bInitialOwner用于控制互斥量的初始状态。
-bInitialOwner是TRUE,那么对象的线程ID将被设为调用线程的ID,递归计数将被设为1。此刻处于未触发状态。
-bInitialOwner是FALSE,对象的线程ID和递归计数都为0,处于触发状态。
成功等待了几次,Release也要调用相应的次数(使对象的递归计数变为0)才能触发对象。
-Release的调用次数如果有错误,在编译链接中不会有错误,只是对结果产生影响。