一、定义

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相关推荐

  1. CreateMutex创建互斥体可以用于只运行进程的一个实例

    CreateMutex 作用 找出当前系统是否已经存在指定进程的实例.如果没有则创建一个互斥体.CreateMutex()函数可用来创建一个有名或无名的互斥量对象,其函数原型为 VC声明 HANDLE ...

  2. 关于程序多开的尝试。CreateMutex,OpenMuxtex,ReleaseMutex

    因为偶尔会遇到对那些不能支持双开的程序进行多开.. 根据前一阵转的一篇文件了解到,现在大多程序都用CreateMutex方式来限制多开, 于是有个想法:它Create了,我Release它,然后不就可 ...

  3. 防止程序启动两次的方法CreateMutex()

    在工程文件中, WinMain函数里加上以下代码(此代码在BCB6.0下运行):          HANDLE hMutex = CreateMutex(NULL, false, "Pro ...

  4. C++使用Windows API CreateMutex函数多线程编程

    C++中也可以使用Windows 系统中对应的API函数进行多线程编程.使用CreateThread函数创建线程,并且可以通过CreateMutex创建一个互斥量实现线程间数据的同步: #includ ...

  5. Delphi CreateMutex 防止程序多次运行

    windows是个多用户多任务的操作系统,支持多个程序同时运行,如果你的程序不想让用户同时运行一个以上, 那应该怎样做呢? 本文将介绍避免用户同时运行多个程序的例子. 需要用到的函数CreateMut ...

  6. hook createmutex openmutex 实现多开

    通过HOOK createmutex 来多开程序,比如微信. FARPROC addrOpenMutexW = NULL; FARPROC addrCreateMutexW = NULL;void h ...

  7. CreateMutex、WaitForSingleObject、ReleaseMutex——创建互斥对象

    CreateMutex CreateMutex作用是找出当前系统是否已经存在指定进程的实例.如果没有则创建一个互斥体. 互斥对象是系统内核维护的一种数据结构,它保证了对象对单个线程的访问权 互斥对象的 ...

  8. CreateEvent、CreateSemaphore、ReleaseSemaphore、CreateMutex

    /// 用户模式 对事件进行初始化操作 HANDLE CreateEvent(LPSECURITY_ATTRIBUTES lpEventAttributes, // 安全属性BOOL bManualR ...

  9. c++使用CreateMuteX函数创建互斥对象单一运行实例

    c++使用CreateMuteX函数创建互斥对象单一运行实例 #include "stdafx.h" #include <Windows.h>// 判断是否重复运行 B ...

  10. CreateMutex的使用

    CreateMutex作用是找出当前系统是否已经存在指定进程的实例.如果没有则创建一个互斥体. HANDLE CreateMutex( LPSECURITY_ATTRIBUTESlpMutexAttr ...

最新文章

  1. C#生成带Logo二维码
  2. MySQL存储引擎中的MyISAM和InnoDB区别详解
  3. AC日记——行程长度编码 openjudge 1.7 32
  4. java二叉堆_为什么二叉堆利用数组存储?
  5. C#从excel中将数据导出到datatable
  6. 新手教程:如何改变应用名称
  7. python离线安装pip.whl_20180903 - Python Pip 工具下载whl包与离线安装
  8. python stdout清空_python中stdout输出不缓存的设置方法
  9. 一个好的销售团队需具备的4个特点
  10. 提高网站第一次加载速度
  11. “互联网+”时代,漫谈影响用户体验的X因素
  12. 【Struts2】〖登录功能〗Struts2框架实现登录功能
  13. 小黑笔记:transe模型
  14. 用eviews建立sarima模型_计量经济学第10讲(时间序列计量经济学模型:序列相关性)...
  15. Unity Shader - 车漆效果(基于MatCap)
  16. 用where in遇到null时的解决方法1
  17. python一行输出多个数据_python 如何将一系列数字十个一行输出
  18. 【linux】理解 export PATH、LIBRARY_PATH、 LD_LIBRARY_PATH
  19. android手机华为p10,华为P10的手机系统是什么
  20. 学习笔记(5):JavaWeb基础核心技术-5. 佟刚_JavaWEB_Servlet 的配置及生命周期方法

热门文章

  1. zookeeper 客户端启动
  2. CentOS 提示Warning: dracut-initqueue timeout - starting timeout script
  3. 王爽《汇编语言》读书笔记——第二章
  4. CyclicBarrier 用法详解
  5. 聊聊在线教育的推荐系统
  6. R语言绘图|洛伦兹曲线
  7. WebBrowser控件使用详解
  8. 用租赁汽车作质押是否构成犯罪?
  9. 机票管理系统 python3 航班动态管理 文件存储 项目完整代码
  10. bmp格式 8bit与24bit深度相互转换