CreateMutexの使い方の詳細
1319 ワード
HANDLE
CreateMutex(
LPSECURITY_ATTRIBUTES lpMutexAttributes,
//
BOOL
bInitialOwner,
//
LPCTSTR
lpName
//
);
1.CreateMutexはロックを作成しただけで、ドアをロックするか引き出しをロックするか、オブジェクトのパンツをロックするかは自分で決めます.2.lpNameはこのロックの名前を指定します.この鍵に名前をつけなくてもいいです.同じ名前が付いているだけで、プロセスにまたがってロックをかけると、同じロックが得られます.3. HANDLE m_hMutex = CreateMutex(NULL,TRUE,"cplusplus_me");ロックを作成しただけで、今までこの文が完成して、彼は何もロックしていません.//ロックWaitForSingleObject(hMutex,INFINITE);//その他の関数があります.詳しくはMSDNの説明//ここにロックされたものを書きます.一般的には、共有データ(システムメモリを消費する)を操作します.
//ReleaseMutex(hMutex);
/* , */
class MTCMutex
{
public:
MTCMutex() :_mutex(NULL)
{
this->_mutex = CreateMutex(NULL, FALSE, NULL);
}
virtual ~MTCMutex()
{
if (this->_mutex)
{
CloseHandle(this->_mutex);
this->_mutex = NULL;
}
}
MTCMutex(const MTCMutex& mutex){ *this = mutex; }
MTCMutex& operator=(const MTCMutex& 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);
}
};