CreateMutex() 、ReleaseMutex()

CreateMutex() 、ReleaseMutex()功能:CreateMutex()用于有独占要求的程序(在其进程运行期间不允许其他使用此端口设备的程序运行,或不允许同名程序运行)。比如运行金山词霸时,一次只能运行一个实例,当运行第二个实例时,实际上是激活第一个实例,将其带到最顶层。原型:1HANDLECreateMutex(2LPSECURITY_ATTRIBUTESlpMutexAttribut…

大家好,又见面了,我是你们的朋友全栈君。

功能

CreateMutex() 用于有独占要求的程序 (在其进程运行期间不允许其他使用此端口设备的程序运行,或不允许同名程序运行)。

比如运行金山词霸时,一次只能运行一个实例,当运行第二个实例时,实际上是激活第一个实例,将其带到最顶层。

原型

1 HANDLE CreateMutex(   
2     LPSECURITY_ATTRIBUTES lpMutexAttributes, 
3     BOOL bInitialOwner,  
4     LPCTSTR lpName 
5 );

参数

lpMutexAttributes:必须为NULL

bInitialOwner:如果为TRUE,调用互斥对象的线程获得互斥对象的所有权

         如果为FALSE,则不拥有

lpName:如果lpName跟一个已存在的事件、信号、文件映射对象匹配,即命名的互斥对象已存在,则CreateMutex函数失败,GetLastError()返回ERROR_INVALID_HANDLE。

注解

一旦不再需要,注意必须用CloseHandle函数将互斥体句柄关闭。从属于它的所有句柄都被关闭后,就会删除对象。
进程中止前,一定要释放互斥体(ReleaseMutex(HANDLE)),如不慎
采取这个措施,就会将这个互斥体标记为废弃,并自动释放所有权。共享这个互斥体的其他
应用程序也许仍然能够用它,但会接收到一个废弃状态信息,指出上一个所有进程未能正常关闭。

代码

 1 BOOL CBBBApp::SetMutex()  2 {  3 BOOL bFound = FALSE;  4  5 HANDLE hMutexOneInstance = ::CreateMutex(NULL, TRUE, _T("MutexBBB"));  6  7 if (::GetLastError() == ERROR_ALREADY_EXISTS)  8  {  9 TRACE(_T("Instance对象已存在")); 10 11 bFound = TRUE; 12  CloseHandle(hMutexOneInstance); 13 hMutexOneInstance = NULL; 14  } 15 16 if (hMutexOneInstance) 17  { 18  ::ReleaseMutex(hMutexOneInstance); 19  } 20 21 if (bFound) 22  { 23 return FALSE; 24  } 25 26 return TRUE; 27 }

转载于:https://www.cnblogs.com/SnailProgramer/p/4235310.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/153180.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月26日 下午2:46
下一篇 2022年6月26日 下午2:46


相关推荐

  • 机器学习发展历史回顾

    机器学习发展历史回顾其它机器学习、深度学习算法的全面系统讲解可以阅读《机器学习-原理、算法与应用》,清华大学出版社,雷明著,由SIGAI公众号作者倾力打造。书的购买链接 书的勘误,优化,源代码资源机器学习是现阶段解决很多人工智能问题的主流方法,作为一个独立的方向,正处于高速发展之中。最早的机器学习算法可以追溯到20世纪初,到今天为止,已经过去了100多年。从1980年机器学习称为一个独立的方向开始算起,到现在…

    2022年5月29日
    46
  • 解决主页被 hao.360.cn 劫持 及 分析[通俗易懂]

    解决主页被 hao.360.cn 劫持 及 分析[通俗易懂]解决主页被hao.360.cn劫持及分析 解决办法:1.删除注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Mslmedia2.重启3.删除驱动C:\WINDOWS\system32\DRIVERS\Mslmedia.sys搞定现象:打开任何浏览器,主页被hao.360.cn劫持。跳

    2022年7月26日
    30
  • CreateMutex互斥量

    CreateMutex互斥量C++API CreateMutex找出当前系统是否已经存在指定进程的实例。如果没有则创建一个互斥体。CreateMutex()函数可用来创建一个有名或无名的互斥量对象。HANDLECreateMutex(  LPSECURITY_ATTRIBUTES lpMutexAttributes,//指向安全属性的指针  BOOL bInitialOwner,//

    2022年10月4日
    8
  • 高斯消去法代码

    高斯消去法代码高斯消去法 c 代码顺序高斯列选主元 include lt cstdio gt include lt iostream gt include lt algorithm gt include lt cmath gt usingnamespa constintn 3 执行程序前手动改变方程数 voidgauss doublea n n

    2026年3月19日
    1
  • oracle 中的除法函数,Oracle 函数

    oracle 中的除法函数,Oracle 函数Oracle函数1数值型函数abs:求绝对值函数,如:abs(?5)5sqrt:求平方根函数,如:sqrt(2)1.41421356power:求幂函数,如:power(2,3)8cos:求余弦三角函数,如:cos(3.14159)?1mod:求除法余数,如:mod(1600,300)100ceil:求大于等于某数的最小整数,如:ceil(2.35)3floor:求小于等于某数的…

    2022年7月17日
    204
  • 自监督学习-MoCo-论文笔记[通俗易懂]

    自监督学习-MoCo-论文笔记[通俗易懂]自监督学习-Moco

    2025年11月16日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号