contur2
Loading...
Searching...
No Matches
contur::CriticalSection Class Referencefinal

Critical-section adapter over a synchronization primitive. More...

#include <critical_section.h>

Inheritance diagram for contur::CriticalSection:
Collaboration diagram for contur::CriticalSection:

Public Member Functions

 CriticalSection (std::unique_ptr< ISyncPrimitive > primitive=nullptr)
 Constructs a critical section using provided primitive.
 ~CriticalSection () override
 CriticalSection (const CriticalSection &)=delete
CriticalSectionoperator= (const CriticalSection &)=delete
 CriticalSection (CriticalSection &&) noexcept
CriticalSectionoperator= (CriticalSection &&) noexcept
Result< void > acquire (ProcessId pid) override
 Acquires underlying primitive.
Result< void > release (ProcessId pid) override
 Releases underlying primitive.
Result< void > tryAcquire (ProcessId pid) override
 Non-blocking acquire on underlying primitive.
std::string_view name () const noexcept override
 Primitive name for diagnostics.
Result< void > enter (ProcessId pid)
 Alias for acquire().
Result< void > leave (ProcessId pid)
 Alias for release().
Result< void > tryEnter (ProcessId pid)
 Alias for tryAcquire().
Public Member Functions inherited from contur::ISyncPrimitive
virtual ~ISyncPrimitive ()=default

Private Attributes

std::unique_ptr< Impl > impl_

Detailed Description

Critical-section adapter over a synchronization primitive.

Definition at line 13 of file critical_section.h.

Constructor & Destructor Documentation

◆ CriticalSection() [1/3]

contur::CriticalSection::CriticalSection ( std::unique_ptr< ISyncPrimitive > primitive = nullptr)
explicit

Constructs a critical section using provided primitive.

If primitive is null, an internal Mutex is used.

◆ ~CriticalSection()

contur::CriticalSection::~CriticalSection ( )
override

◆ CriticalSection() [2/3]

contur::CriticalSection::CriticalSection ( const CriticalSection & )
delete

◆ CriticalSection() [3/3]

contur::CriticalSection::CriticalSection ( CriticalSection && )
noexcept

Member Function Documentation

◆ acquire()

Result< void > contur::CriticalSection::acquire ( ProcessId pid)
nodiscardoverridevirtual

Acquires underlying primitive.

Implements contur::ISyncPrimitive.

◆ enter()

Result< void > contur::CriticalSection::enter ( ProcessId pid)
nodiscard

Alias for acquire().

◆ leave()

Result< void > contur::CriticalSection::leave ( ProcessId pid)
nodiscard

Alias for release().

◆ name()

std::string_view contur::CriticalSection::name ( ) const
nodiscardoverridevirtualnoexcept

Primitive name for diagnostics.

Implements contur::ISyncPrimitive.

◆ operator=() [1/2]

CriticalSection & contur::CriticalSection::operator= ( const CriticalSection & )
delete

◆ operator=() [2/2]

CriticalSection & contur::CriticalSection::operator= ( CriticalSection && )
noexcept

◆ release()

Result< void > contur::CriticalSection::release ( ProcessId pid)
nodiscardoverridevirtual

Releases underlying primitive.

Implements contur::ISyncPrimitive.

◆ tryAcquire()

Result< void > contur::CriticalSection::tryAcquire ( ProcessId pid)
nodiscardoverridevirtual

Non-blocking acquire on underlying primitive.

Implements contur::ISyncPrimitive.

◆ tryEnter()

Result< void > contur::CriticalSection::tryEnter ( ProcessId pid)
nodiscard

Alias for tryAcquire().

Member Data Documentation

◆ impl_

std::unique_ptr<Impl> contur::CriticalSection::impl_
private

Definition at line 49 of file critical_section.h.


The documentation for this class was generated from the following file: