Initial MSVC 2008 projects workspace
This commit is contained in:
46
libl2c_utils/l2c_lock.cpp
Normal file
46
libl2c_utils/l2c_lock.cpp
Normal file
@@ -0,0 +1,46 @@
|
||||
#include "pch.h"
|
||||
#include "l2c_lock.h"
|
||||
|
||||
CriticalSection::CriticalSection()
|
||||
{
|
||||
m_locked = false;
|
||||
InitializeCriticalSectionAndSpinCount( &m_lock, 10 );
|
||||
}
|
||||
|
||||
CriticalSection::~CriticalSection()
|
||||
{
|
||||
if( m_locked ) LeaveCriticalSection( &m_lock );
|
||||
m_locked = false;
|
||||
DeleteCriticalSection( &m_lock );
|
||||
}
|
||||
|
||||
void CriticalSection::Lock()
|
||||
{
|
||||
if( m_locked ) return;
|
||||
EnterCriticalSection( &m_lock );
|
||||
m_locked = true;
|
||||
}
|
||||
|
||||
void CriticalSection::Unlock()
|
||||
{
|
||||
if( !m_locked ) return;
|
||||
LeaveCriticalSection( &m_lock );
|
||||
m_locked = false;
|
||||
}
|
||||
|
||||
bool CriticalSection::TryLock( unsigned int wait_milliseconds )
|
||||
{
|
||||
if( m_locked ) return true;
|
||||
if( TryEnterCriticalSection( &m_lock ) ) return true;
|
||||
if( wait_milliseconds > 0 )
|
||||
{
|
||||
Sleep( (DWORD)wait_milliseconds );
|
||||
if( TryEnterCriticalSection( &m_lock ) ) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CriticalSection::isLocked() const
|
||||
{
|
||||
return m_locked;
|
||||
}
|
Reference in New Issue
Block a user