进程间互斥

正在做的软件升级系统,像QQ升级一样,升级程序运行时,主程序运行不了,要等升级程序运行完毕,主程序才可以继续运行

这里采用命名互斥量来实现进程间互斥

主程序代码:

 HANDLE m_hMutex = OpenMutex(MUTEX_ALL_ACCESS,FALSE,L"MYHTTP");  //打开互斥量,如果之前不存在,则返回值为0,否则返回非零值
 if(m_hMutex)
 {
  WaitForSingleObject(m_hMutex,INFINITE);  //等待升级程序运行结束
 }
 ReleaseMutex(m_hMutex);

CloseHandle(m_hMutex);
 

 

升级程序:(假设默认主程序停止运行)

HANDLE m_hMutex = CreateMutex(NULL, TRUE, L"MYHTTP");  //创建互斥量
 if (GetLastError() == ERROR_ALREADY_EXISTS)
 {
  printf("ALREADY EXISTS");
  CloseHandle(m_hMutex);
  m_hMutex = NULL;
 
 }

实现

ReleaseMutex(m_hMutex);  //释放互斥量

刚刚实现的是两个进程间的互斥,已经通过测试,下面讲的是避免一个程序启动两次,即一个进程有两个实例:

// 创建互斥量
HANDLE m_hMutex = CreateMutex(NULL, FALSE, "Sample07");
// 检查错误代码
if (GetLastError() == ERROR_ALREADY_EXISTS) {
 // 如果已有互斥量存在则释放句柄并复位互斥量
 CloseHandle(m_hMutex);
 m_hMutex = NULL;
 // 程序退出
 return FALSE;
}

可参考blog:

http://hi.baidu.com/machh03/blog/item/52c0cc3864fd5b2697ddd815.html

转载于:https://www.cnblogs.com/fairycao/archive/2009/12/10/1621157.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值