您当前的位置: 首页 >  windows

令狐掌门

暂无认证

  • 0浏览

    0关注

    513博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

令狐掌门 发布时间:2020-02-15 18:27:06 ,浏览量:0

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

(1)互斥量单例运行

/*

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

*/

#include
#include
#include

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
#include
 
int  main()
{
	HANDLE  hSemaphore = CreateSemaphore(NULL, 1, 1, L"asdfg");
 
	//根据宏ERROR_ALREADY_EXISTS进行判断是否多实例运行
	if(GetLastError()&
关注
打赏
1652240117
查看更多评论
立即登录/注册

微信扫码登录

0.0361s