Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

67 lines
2.8 KiB

// --------------------------------------------------------------------------
// Module Name: SingleThreadedExecution.h
//
// 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
// --------------------------------------------------------------------------
#ifndef _SingleThreadedExecution_
#define _SingleThreadedExecution_
#include "KernelResources.h"
// --------------------------------------------------------------------------
// CSingleThreadedExecution
//
// Purpose: This class acquires the given critical section object in its
// constructor and releases it in its destructor. Keep code
// executed with the scope of this object to a minimum to avoid
// impacting performance.
//
// History: 1999-11-06 vtan created
// 2000-02-01 vtan moved from Neptune to Whistler
// --------------------------------------------------------------------------
class CSingleThreadedExecution
{
private:
CSingleThreadedExecution (void);
const CSingleThreadedExecution& operator = (const CSingleThreadedExecution& assignObject);
public:
CSingleThreadedExecution (CCriticalSection& criticalSection);
~CSingleThreadedExecution (void);
private:
CCriticalSection& _criticalSection;
};
// --------------------------------------------------------------------------
// CSingleThreadedMutexExecution
//
// Purpose: This class acquires the given CMutex object in its constructor
// and releases it in its destructor. Keep code executed with
// the scope of this object to a minimum to avoid impacting
// performance.
//
// History: 1999-10-13 vtan created
// 2000-02-01 vtan moved from Neptune to Whistler
// --------------------------------------------------------------------------
class CSingleThreadedMutexExecution
{
private:
CSingleThreadedMutexExecution (void);
const CSingleThreadedMutexExecution& operator = (const CSingleThreadedMutexExecution& assignObject);
public:
CSingleThreadedMutexExecution (CMutex& mutex);
~CSingleThreadedMutexExecution (void);
private:
CMutex& _hMutex;
};
#endif /* _SingleThreadedExecution_ */