使用内核对象使程序单实例运行:互斥信号量
2009-09-16 19:51
369 查看
内核对象是所有Windows进程都可以访问的,因此可以使用其中的互斥信号量和事件对象使程序单实例运行。。
比起原来的IO锁好了很多 = = DEMO如下:
【使用互斥信号量(互斥对象)实现】
Code:
//////////////////////////////////////////////////////////////////////////
// CopyRight(c) 2009, YOYO, All Rights Reserved.
// Author: LIN YiQian
// Created: 2009/09/16
// Describe: 使用内核对象控制程序只能单实例 演示
//////////////////////////////////////////////////////////////////////////
#include <Windows.h>
#include <iostream>
using namespace std;
void main(void)
{
HANDLE hInstance = CreateMutex(NULL, TRUE, "SingleInstance");
if (hInstance)
{
if (ERROR_ALREADY_EXISTS == GetLastError())
{
printf("程序已经启动!");
system("pause");
return;
}
}
while (true)
{
printf("程序运行阿 = = 运行阿 = = 运行阿。。/n");
Sleep(100);
}
CloseHandle(hInstance);
return;
}
比起原来的IO锁好了很多 = = DEMO如下:
【使用互斥信号量(互斥对象)实现】
Code:
//////////////////////////////////////////////////////////////////////////
// CopyRight(c) 2009, YOYO, All Rights Reserved.
// Author: LIN YiQian
// Created: 2009/09/16
// Describe: 使用内核对象控制程序只能单实例 演示
//////////////////////////////////////////////////////////////////////////
#include <Windows.h>
#include <iostream>
using namespace std;
void main(void)
{
HANDLE hInstance = CreateMutex(NULL, TRUE, "SingleInstance");
if (hInstance)
{
if (ERROR_ALREADY_EXISTS == GetLastError())
{
printf("程序已经启动!");
system("pause");
return;
}
}
while (true)
{
printf("程序运行阿 = = 运行阿 = = 运行阿。。/n");
Sleep(100);
}
CloseHandle(hInstance);
return;
}
相关文章推荐
- 使用内核对象使程序单实例运行:事件对象
- 使用命名对象防止运行一个程序的多个实例
- 互斥对象实现 程序单个实例运行
- 互斥对象之只运行一个实例程序
- 使用命名对象防止运行一个程序的多个实例【转】
- 使用命名对象防止运行一个程序的多个实例【转】
- 用命名内核对象判断程序是否有实例正在运行
- 使用Mutex实现程序单实例运行(c#)
- Android深入浅出系列之实例应用—程序运行进度提示条应用ProgressBar和Handler的使用
- 通过互斥对象实现 只运行一个实例
- wince 防止程序创建多个实例,互斥的使用
- C# 创建互斥进程(程序只能运行一个实例)
- 一起talk C栗子吧(第一百回:C语言实例--使用信号量进行进程间同步与互斥一)
- 一起talk C栗子吧(第一百零一回:C语言实例--使用信号量进行进程间同步与互斥二)
- C#使用Mutex实现程序单实例运行
- 一般处理程序里使用session对象为null,未将对象引用到实例化
- 只允许运行一个实例的程序(互斥程序)
- 各种语言Mutex(互斥)实现程序单实例运行
- 使用互斥量保证程序最多只有一个实例运行
- Android深入浅出系列之实例应用—程序运行进度提示条应用ProgressBar和Handler的使用