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);
}
};