windows C++多线程(九):C++实现程序单实例运行

       windows有一些程序是单实例的,比如'任务管理器',‘控制面板’等,而大部分程序是多实例运行的,比如QQ,微信,各种浏览器等。在项目开发时有时要求程序单实例运行,C++的实现途径很多,这里提供信号量、互斥量、事件分别实现实现程序单例启动运行的方法。

(1)互斥量单例运行

/*

创建互斥体实现一个程序只允许允许一个实例运行

*/

#include<process.h>
#include<windows.h>
#include<stdio.h>

int  main()
{
	HANDLE  hMutex   = CreateMutex(NULL, FALSE, L"我是互斥体");
	if (GetLastError() == ERROR_ALREADY_EXISTS)
	{
		printf("程序已经运行了,退出!\n");
		getchar();

		CloseHandle(hMutex);
		return  0;
	}

	printf("第一次运行程序!\n");
	getchar();
 
	return 0;
}

(2)信号量

/*
利用Semaphore实现程序只允许一个进程运行
*/
 
#include<windows.h>
#include<stdio.h>
 
int  main()
{
	HANDLE  hSemaphore = CreateSemaphore(NULL, 1, 1, L"asdfg");
 
	//根据宏
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

令狐掌门

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值