大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
一、定义
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
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/185885.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...