您的位置:首页 > 其它

用CMutex类实现程序互斥运行

2016-09-06 19:36 183 查看
在软件的开发过程中,有时需要控制一个程序不能同时有多个实例运行,也就是多个进程间互斥运行。我们在Visual C++ 6.0中利用CMutex类实现了多个进程间互斥运行。
在Visual C++ 6.0中我们用默认方式生成基于对话框的名为“test”的应用程序,在test.cpp文件开头加上以下一行代码
#include <afxmt.h>
 
在程序的初始化前,生成一个全局的CMutex对象。
 
//test 是这个同步对象的名字。不同进程之间使用同一个同步对象,要起相同的名字。
CMutex mutex(true,"test");
 
在程序的初始化阶段,在CwinApp派生类的InitInstance函数的开始处,添加以下代码:
BOOL CTestApp::InitInstance(){
CSingleLock singleLock(&mutex); //生成一个同步访问对象
singleLock.Lock(0); // 试图获取(锁住)共享资源
if(!sing.IsLocked()){ //共享资源被其他对象使用,锁定资源未成功
AfxMessageBox("test 程序已经运行,程序将退出");
exit(0); // 程序退出运行
}
……
……
……
……
……
……
……
……
}
以上的程序在Win2000/VC 6.0中已调试通过。以上的程序也可控制不同程序之间不能同时运行,不同程序的CMutex对象名字相同即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: