зеркало из https://github.com/mozilla/gecko-dev.git
Bug 820875 - Reimplement DMD's MutexBase using critical sections; r=bbondy
This commit is contained in:
Родитель
3814213457
Коммит
f04c3eb02c
|
@ -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);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче