一、定义
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/
https://blog.csdn.net/xialianggang1314/article/details/
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232787.html原文链接:https://javaforall.net