C++使用CreateMutex
一、定义
HANDLE CreateMutex(
LPSECURITY_ATTRIBUTES lpMutexAttributes, // 指向安全属性的指针
BOOL bInitialOwner, // 初始化互斥对象的所有者
LPCTSTR lpName // 指向互斥对象名的指针
);
第一个参数是一个指向SECURITY_ATTRIBUTES结构体的指针,一般的情况下,可以是nullptr。
第二个参数类型为BOOL,表示互斥锁创建出来后是否被当前线程持有。
第三个参数类型为字符串(const TCHAR*),是这个互斥锁的名字,如果是nullptr,则互斥锁是匿名的。
例: HANDLE hMutex = CreateMutex(nullptr, FALSE, nullptr);上面的代码创建了一个匿名的互斥锁,创建出来后,当前线程不持有这个互斥锁。
二、实例
#include <windows.h>class CLock
{public:CLock() :_mutex(NULL){this->_mutex = CreateMutex(NULL, FALSE, TEXT("_temp_mutex_lock"));}virtual ~CLock(){if (this->_mutex){CloseHandle(this->_mutex);this->_mutex = NULL;}}CLock(const CLock& mutex) { *this = mutex; }CLock& operator=(const CLock& other){if (this != &other){this->_mutex = other._mutex;}return *this;}
private:HANDLE _mutex;public:void Lock(){WaitForSingleObject(this->_mutex, INFINITE);}void UnLock(){ReleaseMutex(this->_mutex);}};
参考:
https://blog.csdn.net/enterlly/article/details/79158920
https://blog.csdn.net/xialianggang1314/article/details/78477451
C++使用CreateMutex相关推荐
- CreateMutex创建互斥体可以用于只运行进程的一个实例
CreateMutex 作用 找出当前系统是否已经存在指定进程的实例.如果没有则创建一个互斥体.CreateMutex()函数可用来创建一个有名或无名的互斥量对象,其函数原型为 VC声明 HANDLE ...
- 关于程序多开的尝试。CreateMutex,OpenMuxtex,ReleaseMutex
因为偶尔会遇到对那些不能支持双开的程序进行多开.. 根据前一阵转的一篇文件了解到,现在大多程序都用CreateMutex方式来限制多开, 于是有个想法:它Create了,我Release它,然后不就可 ...
- 防止程序启动两次的方法CreateMutex()
在工程文件中, WinMain函数里加上以下代码(此代码在BCB6.0下运行): HANDLE hMutex = CreateMutex(NULL, false, "Pro ...
- C++使用Windows API CreateMutex函数多线程编程
C++中也可以使用Windows 系统中对应的API函数进行多线程编程.使用CreateThread函数创建线程,并且可以通过CreateMutex创建一个互斥量实现线程间数据的同步: #includ ...
- Delphi CreateMutex 防止程序多次运行
windows是个多用户多任务的操作系统,支持多个程序同时运行,如果你的程序不想让用户同时运行一个以上, 那应该怎样做呢? 本文将介绍避免用户同时运行多个程序的例子. 需要用到的函数CreateMut ...
- hook createmutex openmutex 实现多开
通过HOOK createmutex 来多开程序,比如微信. FARPROC addrOpenMutexW = NULL; FARPROC addrCreateMutexW = NULL;void h ...
- CreateMutex、WaitForSingleObject、ReleaseMutex——创建互斥对象
CreateMutex CreateMutex作用是找出当前系统是否已经存在指定进程的实例.如果没有则创建一个互斥体. 互斥对象是系统内核维护的一种数据结构,它保证了对象对单个线程的访问权 互斥对象的 ...
- CreateEvent、CreateSemaphore、ReleaseSemaphore、CreateMutex
/// 用户模式 对事件进行初始化操作 HANDLE CreateEvent(LPSECURITY_ATTRIBUTES lpEventAttributes, // 安全属性BOOL bManualR ...
- c++使用CreateMuteX函数创建互斥对象单一运行实例
c++使用CreateMuteX函数创建互斥对象单一运行实例 #include "stdafx.h" #include <Windows.h>// 判断是否重复运行 B ...
- CreateMutex的使用
CreateMutex作用是找出当前系统是否已经存在指定进程的实例.如果没有则创建一个互斥体. HANDLE CreateMutex( LPSECURITY_ATTRIBUTESlpMutexAttr ...
最新文章
- C#生成带Logo二维码
- MySQL存储引擎中的MyISAM和InnoDB区别详解
- AC日记——行程长度编码 openjudge 1.7 32
- java二叉堆_为什么二叉堆利用数组存储?
- C#从excel中将数据导出到datatable
- 新手教程:如何改变应用名称
- python离线安装pip.whl_20180903 - Python Pip 工具下载whl包与离线安装
- python stdout清空_python中stdout输出不缓存的设置方法
- 一个好的销售团队需具备的4个特点
- 提高网站第一次加载速度
- “互联网+”时代,漫谈影响用户体验的X因素
- 【Struts2】〖登录功能〗Struts2框架实现登录功能
- 小黑笔记:transe模型
- 用eviews建立sarima模型_计量经济学第10讲(时间序列计量经济学模型:序列相关性)...
- Unity Shader - 车漆效果(基于MatCap)
- 用where in遇到null时的解决方法1
- python一行输出多个数据_python 如何将一系列数字十个一行输出
- 【linux】理解 export PATH、LIBRARY_PATH、 LD_LIBRARY_PATH
- android手机华为p10,华为P10的手机系统是什么
- 学习笔记(5):JavaWeb基础核心技术-5. 佟刚_JavaWEB_Servlet 的配置及生命周期方法