2025年c++使用了未定义类型_c++如何新建

c++使用了未定义类型_c++如何新建一 定义 HANDLE CreateMutex LPSECURITY ATTRIBUTES lpMutexAttri 指向安全属性的指针 BOOL bInitialOwne 初始化互斥对象的所有者 LPCTSTR lpName 指向互斥对象名的指针 第一个参数是一个指向 SECURITY ATTRIBUTES 结构体的指针 一般的情况下

一、定义

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

编程小号
上一篇 2025-01-23 20:46
下一篇 2025-01-29 20:17

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/131035.html