HANDLE CreateMutex(
LPSECURITY_ATTRIBUTES lpMutexAttributes, // SD
BOOL bInitialOwner, true 当前创建线程拥有该互斥体 false 当前创建线程不拥有
LPCTSTR lpName // 对象的名字
);
typedef struct _SECURITY_ATTRIBUTES {
DWORD nLength; 结构体的长度
LPVOID lpSecurityDescriptor; 安全描述
BOOL bInheritHandle; 窗口能否被继承
} SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES;
HANDLE OpenMutex(
DWORD dwDesiredAccess, // access MUTEX_ALL_ACCESS 所有权限
BOOL bInheritHandle, // inheritance option 是否可以继承
LPCTSTR lpName // object name CreateMutex 创建互斥体的名字
);
DWORD WaitForSingleObject(
HANDLE hHandle, // handle to object create open 打开的句柄
DWORD dwMilliseconds // time-out interval 等待时间 毫秒计数 INFINITE 等待到永远
);
WAIT_ABANDONED | 等待的对象是一个互斥对象,并且没有被它所在的线程释放。估计你有一个互斥对象,在线程退出时,没有释放。
互斥体现在没标识。 |
WAIT_OBJECT_0 | 获得了互斥体 |
WAIT_TIMEOUT | 等待超时 |
BOOL ReleaseMutex(
HANDLE hMutex // handle to mutex
);
CloseHandle(hMutex); create open 打开的句柄 不用的时间要关了
CreateMutex(NULL,false,"topdesk"); //创建互斥体
HANDLE h=OpenMutex(MUTEX_ALL_ACCESS,false,"topdesk"); //
if(WAIT_OBJECT_0==WaitForSingleObject(h,INFINITE))
{
while(1)
{
}
}
ReleaseMutex(h);