一. 为什么要实现进程单例
二.实现进程单例的思路方法:
1.思路:
进程在启动时首先检查当前系统是否已经存在有此进程的实例,如果没有,进程将成功创建并设置标识实例已经存在的标记。此后再创建进程时将会通过该标记而知晓其实例已经存在,从而保证进程在系统中只能存在一个实例。
2.方法:
内存映射文件、有名事件量、有名互斥量以及全局共享变量等多种方法来实现
三.具体实现:
互斥量:
使用CreateMutex() 得到一个Hanldle句柄,使用GetLastError()判断是否为ERROR_ALREADY_EXISTS,如果是则已经存在。
// 创建互斥量
HANDLE m_hMutex = CreateMutex(NULL, FALSE, "Sample07");
// 检查错误代码
if (GetLastError() == ERROR_ALREADY_EXISTS) {
// 如果已有互斥量存在则释放句柄并复位互斥量
CloseHandle(m_hMutex);
m_hMutex = NULL;
// 程序退出
return FALSE;
}