windows进程单例

一. 为什么要实现进程单例


二.实现进程单例的思路方法:

    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;

}

你可能感兴趣的:(windows进程单例)