一、定义
HANDLE CreateMutex(
LPSECURITY_ATTRIBUTES lpMutexAttributes, // 指向安全属性的指针
BOOL bInitialOwner, // 初始化互斥对象的所有者
LPCTSTR lpName // 指向互斥对象名的指针
);
第一个参数是一个指向SECURITY_ATTRIBUTES结构体的指针,一般的情况下,可以是nullptr。
第二个参数类型为BOOL,表示互斥锁创建出来后是否被当前线程持有。
第三个参数类型为字符串(const TCHAR*),是这个互斥锁的名字,如果是nullptr,则互斥锁是匿名的。
例: HANDLE hMutex = CreateMutex(nullptr, FALSE, nullptr);上面的代码创建了一个匿名的互斥锁,创建出来后,当前线程不持有这个互斥锁。
二、实例
#include
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
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/131035.html