CreateMutex() 、ReleaseMutex()
功能:
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。
注解:
代码:
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
CreateMutex() 、ReleaseMutex()相关推荐
- windows线程 互斥锁CreateMutex、ReleaseMutex、CloseHandle
互斥 相关问题 多线程下代码或资源的共享使用. 互斥的使用 1.创建互斥 HANDLE CreateMutex( LPSECURITY_ATTRIBUTES lpMutexAttributes,//安 ...
- CreateMutex、WaitForSingleObject、ReleaseMutex——创建互斥对象
CreateMutex CreateMutex作用是找出当前系统是否已经存在指定进程的实例.如果没有则创建一个互斥体. 互斥对象是系统内核维护的一种数据结构,它保证了对象对单个线程的访问权 互斥对象的 ...
- CreateMutex、WaitForSingleObject、ReleaseMutex
我们对线程做一些简单的同步处理,这里我们用互斥量(Mutex). 互斥量(Mutex)和二元信号量类似,资源仅允许一个线程访问.与二元信号量不同的是,信号量在整个系统中可以被任意线程获取和释放,也就是 ...
- CreateMutex WaitForSingleObject ReleaseMutex使用
HANDLE CreateMutex( LPSECURITY_ATTRIBUTES lpMutexAttributes,// BOOL bInitialOwner, // flag for init ...
- 事件EVENT与waitforsingleobject的使用以及Mutex与Event的区别
Mutex与Event控制互斥事件的使用详解最近写一程序,误用了Mutex的功能,错把Mutex当Event用了.[Mutex]使用Mutex的主要函数:CreateMutex.ReleaseMute ...
- VC++ MFC 多线程及线程同步(详细、全面总结!)
更多详情:http://blog.csdn.net/whyacinth/ VC++ MFC 多线程及线程同步 关键词: MFC 多线程及线程同步 ...
- MFC 多线程及线程同步
一.MFC对多线程编程的支持 MFC中有两类线程,分别称之为工作者线程和用户界面线程.二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环. 工作者线程没有消息机制,通常 ...
- MFC第三节-多线程
一.程序,进程,线程 程序是指令的集合,以文件形式储存在磁盘上.一个程序可以对应多个进程,一个进程代表一个实例. 进程由管理进程的内核对象.地址空间组成.内核对象存放关于进程的统计信息,地址空间包含可 ...
- (转载博文)VC++API速查
窗口处理 2.1 窗口简介 2.2.1 创建普通窗口(CreateWindow.CreateWindowEx) 2.2.2 关闭窗口(CloseWindow) 2.2.3 销毁窗口(DestroyWi ...
最新文章
- IDEA 中 30 秒生成 Spring Cloud Alibaba 工程
- clion opencv安装_Clion+Opencv3.2终极配置教程
- Elastic:为 Elasticsearch 启动 https 访问使数据访问更安全
- 按之字形顺序打印二叉树
- Spring学习(八)AOP详解
- 锐捷网费和锐捷网络缴费_教育信息化领域多位专家出席锐捷“三个课堂”应用展示研讨会...
- [XML-Jsoup]Jsoup_解析_快速入门
- (pytorch-深度学习)深度循环神经网络
- java 重写session_使用Shiro重写Session 自定义SESSION
- 雨林木风win11 64位原版系统v2021.08
- install pecl php_Linux下 PHP 安装pecl_http方法
- 黑客丛林之旅通关攻略(共14关)
- python用双重循环输出菱形图案_使用循环创建菱形图案
- bootstrap3 snippets使用方法
- 数据仓库的四个层次设计
- 开始尝试贝茨视觉训练法
- driller fuzz arm问题解决记录
- 信号调理方法总结笔记
- 如何用大数据找女朋友?
- c++的lambda使用注意事项,可能导致的崩溃问题分析