50 lines
974 B
C++
50 lines
974 B
C++
/*==========================================================================
|
|
* Copyright (C) 1999, 2000 Microsoft Corporation. All Rights Reserved.
|
|
*
|
|
* File: dvcslock.h
|
|
* Content: Class to handle auto-leave of critical sections
|
|
* History:
|
|
* Date By Reason
|
|
* ==== == ======
|
|
* 07/05/00 rodtoll Created It
|
|
*
|
|
***************************************************************************/
|
|
#ifndef __DVCSLOCK_H
|
|
#define __DVCSLOCK_H
|
|
|
|
// CDVCSLock
|
|
//
|
|
// A class to provide automatic unlocking of critical sections when the object
|
|
// passes out of scope.
|
|
//
|
|
class CDVCSLock
|
|
{
|
|
public:
|
|
CDVCSLock( DNCRITICAL_SECTION *pcs ): m_pcs( pcs ), m_fLocked( FALSE )
|
|
{
|
|
};
|
|
|
|
~CDVCSLock()
|
|
{
|
|
if( m_fLocked ) DNLeaveCriticalSection( m_pcs );
|
|
}
|
|
|
|
void Lock()
|
|
{
|
|
DNEnterCriticalSection( m_pcs );
|
|
m_fLocked = TRUE;
|
|
}
|
|
|
|
void Unlock()
|
|
{
|
|
DNLeaveCriticalSection( m_pcs );
|
|
m_fLocked = FALSE;
|
|
}
|
|
|
|
private:
|
|
|
|
DNCRITICAL_SECTION *m_pcs;
|
|
BOOL m_fLocked;
|
|
};
|
|
|
|
#endif |