hMutex = CreateMutex(NULL/*use default*/
, FALSE/*bInitialOwner
为TRUE表示只能创建一个进程实例
为FALSE表示可以多开进程,内存中会有多个同名的Mutex对象
*/
, szName);
if (GetLastError() == ERROR_ALREADY_EXISTS) {//如果有其他实例已经启动
m_bExist = TRUE;
}
如果bInitialOwner 为TRUE,则第二个进程就不能启动。
如果bInitialOwner 为FALSE,则第二个进程会再创建一个同名的互斥体,如下图:


本文详细介绍了Windows系统中Mutex的使用,特别是`CreateMutex`函数的参数`bInitialOwner`的含义。当设置为TRUE时,只允许一个进程实例运行;若为FALSE,允许多个进程创建同名Mutex,可能导致多个进程实例。通过检查`GetLastError()`是否返回`ERROR_ALREADY_EXISTS`,可判断其他实例是否已启动。
978

被折叠的 条评论
为什么被折叠?



