windows-nt/Source/XPSP1/NT/shell/lib/generic/singlethreadedexecution.cpp
2020-09-26 16:20:57 +08:00

94 lines
2.8 KiB
C++

// --------------------------------------------------------------------------
// Module Name: SingleThreadedExecution.cpp
//
// Copyright (c) 1999-2000, Microsoft Corporation
//
// Classes that handle state preservation, changing and restoration.
//
// History: 1999-08-18 vtan created
// 1999-11-16 vtan separate file
// 2000-02-01 vtan moved from Neptune to Whistler
// --------------------------------------------------------------------------
#include "StandardHeader.h"
#include "SingleThreadedExecution.h"
// --------------------------------------------------------------------------
// CSingleThreadedExecution::CSingleThreadedExecution
//
// Arguments: criticalSection = CCriticalSection object containing the
// critical section controlling the block
// of single threaded execution.
//
// Returns: <none>
//
// Purpose: Acquires the given CriticalSection.
//
// History: 1999-11-06 vtan created
// --------------------------------------------------------------------------
CSingleThreadedExecution::CSingleThreadedExecution (CCriticalSection& criticalSection) :
_criticalSection(criticalSection)
{
criticalSection.Acquire();
}
// --------------------------------------------------------------------------
// CSingleThreadedExecution::~CSingleThreadedExecution
//
// Arguments: <none>
//
// Returns: <none>
//
// Purpose: Releases the single threaded execution critical section.
//
// History: 1999-11-06 vtan created
// --------------------------------------------------------------------------
CSingleThreadedExecution::~CSingleThreadedExecution (void)
{
_criticalSection.Release();
}
// --------------------------------------------------------------------------
// CSingleThreadedMutexExecution::CSingleThreadedMutexExecution
//
// Arguments: mutex = CMutex object containing the mutex controlling
// the block of single threaded execution.
//
// Returns: <none>
//
// Purpose: Acquires the given mutex.
//
// History: 1999-10-13 vtan created
// --------------------------------------------------------------------------
CSingleThreadedMutexExecution::CSingleThreadedMutexExecution (CMutex& mutex) :
_hMutex(mutex)
{
mutex.Acquire();
}
// --------------------------------------------------------------------------
// CSingleThreadedMutexExecution::~CSingleThreadedMutexExecution
//
// Arguments: <none>
//
// Returns: <none>
//
// Purpose: Releases the single threaded execution mutex.
//
// History: 1999-10-13 vtan created
// --------------------------------------------------------------------------
CSingleThreadedMutexExecution::~CSingleThreadedMutexExecution (void)
{
_hMutex.Release();
}