互斥量 Mutex

头文件


应用

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的调用次数如果有错误,在编译链接中不会有错误,只是对结果产生影响。

你可能感兴趣的:(互斥量 Mutex)