1. CreateMutex只是创建了一把锁, 这把锁你用来锁门还是锁抽屉还是锁你对象的内裤都由你自己决定。
2. lpName是指定这把锁的名字. 你要不给这把锁取个名字都可以. 只是有了相同的名字, 在跨进程加锁的时候, 就可以得到同一把锁。 3. HANDLE m_hMutex = CreateMutex(NULL,TRUE,"cplusplus_me"); 只是创建了一把锁, 到目前这句完成, 他没有锁任何东西。 //加锁
WaitForSingleObject(hMutex, INFINITE); //还有其它函数可用, 详见MSDN中说明 //这里写被加锁的东西. 一般是操作一些共享数据(占用系统内存)。 //解锁 ReleaseMutex(hMutex);
BOOL CTool::ExistObject() { SECURITY_ATTRIBUTES sa; SECURITY_DESCRIPTOR sd; InitializeSecurityDescriptor(&sd,SECURITY_DESCRIPTOR_REVISION); SetSecurityDescriptorDacl(&sd,TRUE,NULL,FALSE); sa.nLength = sizeof(SECURITY_ATTRIBUTES); sa.bInheritHandle = FALSE; sa.lpSecurityDescriptor = &sd; HANDLE hOnlyOneMonitor = CreateMutex(&sa, TRUE, "Global\\DFSDFDS"); if((hOnlyOneMonitor == NULL) || (GetLastError() == ERROR_ALREADY_EXISTS)) return TRUE; return FALSE; }
【参考】https://www.cnblogs.com/staring-hxs/p/3664765.html