under Win32
class PFWin32MultiThreaded
{
class Lock
{
public:
Lock(PFWin32MultiThreaded* pOuter) : m_pOuter(pOuter)
{ EnterCriticalSection(&m_pOuter->m_critSec); }
~Lock()
{ LeaveCriticalSection(&m_pOuter->m_critSec); }
private:
PFWin32MultiThreaded* m_pOuter;
};
friend class Lock;
protected:
PFWin32MultiThreaded()
{ InitializeCriticalSection(&m_critSec); }
virtual ~PFWin32MultiThreaded()
{ DeleteCriticalSection(&m_critSec); }
private:
CRITICAL_SECTION m_critSec;
};
End of Listing