CriticalSection Class

Represents a critical section object.

Syntax

class CriticalSection;

Members

Constructor

Name Description
CriticalSection::CriticalSection Initializes a synchronization object that is similar to a mutex object, but can be used by only the threads of a single process.
CriticalSection::~CriticalSection Deinitializes and destroys the current CriticalSection object.

Public Methods

Name Description
CriticalSection::IsValid Indicates whether the current critical section is valid.
CriticalSection::Lock Waits for ownership of the specified critical section object. The function returns when the calling thread is granted ownership.
CriticalSection::TryLock Attempts to enter a critical section without blocking. If the call is successful, the calling thread takes ownership of the critical section.

Protected Data Members

Name Description
CriticalSection::cs_ Declares a critical section data member.

Inheritance Hierarchy

CriticalSection

Requirements

Header: corewrappers.h

Namespace: Microsoft::WRL::Wrappers

CriticalSection::~CriticalSection

Deinitializes and destroys the current CriticalSection object.

WRL_NOTHROW ~CriticalSection();

CriticalSection::CriticalSection

Initializes a synchronization object that is similar to a mutex object, but can be used by only the threads of a single process.

explicit CriticalSection(
   ULONG spincount = 0
);

Parameters

spincount
The spin count for the critical section object. The default value is 0.

Remarks

For more information about critical sections and spincounts, see the InitializeCriticalSectionAndSpinCount function in the Synchronization section of the Windows API documentation.

CriticalSection::cs_

Declares a critical section data member.

CRITICAL_SECTION cs_;

Remarks

This data member is protected.

CriticalSection::IsValid

Indicates whether the current critical section is valid.

bool IsValid() const;

Return Value

By default, always returns true.

CriticalSection::Lock

Waits for ownership of the specified critical section object. The function returns when the calling thread is granted ownership.

SyncLock Lock();

   static SyncLock Lock(
   _In_ CRITICAL_SECTION* cs
);

Parameters

cs
A user-specified critical section object.

Return Value

A lock object that can be used to unlock the current critical section.

Remarks

The first Lock function affects the current critical section object. The second Lock function affects a user-specified critical section.

CriticalSection::TryLock

Attempts to enter a critical section without blocking. If the call is successful, the calling thread takes ownership of the critical section.

SyncLock TryLock();

static SyncLock TryLock(
   _In_ CRITICAL_SECTION* cs
);

Parameters

cs
A user-specified critical section object.

Return Value

A nonzero value if the critical section is successfully entered or the current thread already owns the critical section. Zero if another thread already owns the critical section.

Remarks

The first TryLock function affects the current critical section object. The second TryLock function affects a user-specified critical section.