Bug 820875 - Reimplement DMD's MutexBase using critical sections; r=bbondy

This commit is contained in:
Ehsan Akhgari 2012-12-13 19:51:41 -05:00
Родитель 3814213457
Коммит f04c3eb02c
1 изменённых файлов: 5 добавлений и 12 удалений

Просмотреть файл

@ -271,36 +271,29 @@ static const size_t kNoSize = size_t(-1);
class MutexBase
{
HANDLE mMutex;
CRITICAL_SECTION mCS;
DISALLOW_COPY_AND_ASSIGN(MutexBase);
public:
MutexBase()
: mMutex(CreateMutexW(nullptr, false, nullptr))
{
MOZ_ASSERT(mMutex);
InitializeCriticalSection(&mCS);
}
~MutexBase()
{
if (mMutex) {
CloseHandle(mMutex);
}
DeleteCriticalSection(&mCS);
}
void Lock()
{
if (mMutex) {
WaitForSingleObject(mMutex, INFINITE);
}
EnterCriticalSection(&mCS);
}
void Unlock()
{
if (mMutex) {
ReleaseMutex(mMutex);
}
LeaveCriticalSection(&mCS);
}
};