Windows C++多线程:实现程序单例运行
在Windows系统中,有时我们需要保证某个程序只能被打开一次。这就要求我们实现程序单例运行。本文将介绍使用C++多线程编写程序单例运行的方法。
基本思路是:在程序启动时,先检查系统中是否已经有该程序的实例在运行,如果有,则将向该程序发送一个消息,使其窗口获得焦点;如果没有,则将程序的标识存储在共享内存中,并启动主线程继续执行。
下面是相应的源代码:
#include <iostream>
#include <windows.h>
#define PROGRAM_NAME TEXT("MyProgramName") // 程序名称
#define MUTEX_NAME TEXT("MyProgramMutex") // 互斥量名称
// 首先定义一个函数,用于检测程序是否已经在运行
bool checkIsRunning() {
HANDLE hMutex = CreateMutex(NULL, TRUE, MUTEX_NAME);
if (GetLastError() == ERROR_ALREADY_EXISTS) {
CloseHandle(hMutex);
return true;
}
return false;
}
// 主函数
int main() {
if (checkIs