Proud::CriticalSection 클래스 참조

Public 멤버 함수

PROUD_API CriticalSection ()
 
PROUD_API CriticalSection (CriticalSectionSettings &settings)
 
PROUD_API ~CriticalSection (void)
 
PROUD_API void Lock ()
 
PROUD_API void UnsafeLock ()
 
PROUD_API void Unlock ()
 
PROUD_API bool TryLock ()
 
PROUD_API bool IsValid ()
 
bool IsLockedByCurrentThread () const
 
bool IsLocked () const
 
void Reset (CriticalSectionSettings &settings)
 
void ShowErrorOnInvalidState ()
 
uint64_t GetLastLockedThreadID ()
 

Public 속성

bool m_neverCallDtor
 
int m_tryLockSuccessCount
 
int m_tryLockFailCount
 

상세한 설명

Critical section 클래스

  • MFC의 CCriticalSection보다 기능이 더 보강되어 있다.
  • 특히 (SMP 환경에서) thread sleep state를 최대한 줄이기 위해 기본적으로 spin lock이 설정되어 있다. 일반적 용도
  • CriticalSection 객체를 먼저 만든 후, CriticalSectionLock 객체를 통해 critical section lock & unlock을 할 수 있다.

생성자 & 소멸자 문서화

PROUD_API Proud::CriticalSection::CriticalSection ( )

Initializes a critical section object.

PROUD_API Proud::CriticalSection::CriticalSection ( CriticalSectionSettings settings)

Initializes a critical section object.

PROUD_API Proud::CriticalSection::~CriticalSection ( void  )

파괴자

  • 파괴하기 전에, 이 critical section을 점유하고 있는 스레드가 없어야 한다!

멤버 함수 문서화

uint64_t Proud::CriticalSection::GetLastLockedThreadID ( )
returns ID of the thread where the last acquire (lock) is done.

This value does not set to zero if last unacquire (unlock) is done. You must set Proud.CriticalSectionSettings.m_updateLastLockedThreadID to true before using this function.

NOTE: on unix, this is pthread_t value. This may differ from thread ID shown in debugger.

bool Proud::CriticalSection::IsLocked ( ) const

Returns true if this is locked by any thread.

bool Proud::CriticalSection::IsLockedByCurrentThread ( ) const

Returns true if this is locked by current thread.

PROUD_API void Proud::CriticalSection::Lock ( )

critical section을 이 메서드를 호출하는 스레드가 점유한다. 잘못된 호출이 일어났을 시 MessageBox를 띄워줍니다.

PROUD_API bool Proud::CriticalSection::TryLock ( )

EnterCriticalSection 대신 TryEnterCriticalSection을 사용한다.

반환값
성공적으로 잠금 했으면 true.
PROUD_API void Proud::CriticalSection::Unlock ( )

critical section을 이 메서드를 호출하는 스레드가 점유 해제한다.

PROUD_API void Proud::CriticalSection::UnsafeLock ( )

critical section을 이 메서드를 호출하는 스레드가 점유한다. 잘못된 호출이 일어났을 시 아무 처리하지 않고 넘어갑니다.