Contur 2
Educational OS kernel simulator
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:

Public Member Functions

 CriticalSection (std::unique_ptr< ISyncPrimitive > primitive=nullptr)
 Constructs a critical section using provided primitive.
 ~CriticalSection () override
 Destroys critical-section adapter.
 CriticalSection (const CriticalSection &)=delete
 Copy construction is disabled.
CriticalSectionoperator= (const CriticalSection &)=delete
 Copy assignment is disabled.
 CriticalSection (CriticalSection &&) noexcept
 Move-constructs critical section state.
CriticalSectionoperator= (CriticalSection &&) noexcept
 Move-assigns critical section state.
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.
SyncLayer layer () const noexcept override
 Layer classification forwarded from underlying primitive.
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.

Referenced by CriticalSection(), CriticalSection(), operator=(), and operator=().

◆ ~CriticalSection()

contur::CriticalSection::~CriticalSection ( )
override

Destroys critical-section adapter.

◆ CriticalSection() [2/3]

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

Copy construction is disabled.

References CriticalSection().

◆ CriticalSection() [3/3]

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

Move-constructs critical section state.

References CriticalSection().

Member Function Documentation

◆ acquire()

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

Acquires underlying primitive.

Implements contur::ISyncPrimitive.

References acquire().

Referenced by acquire().

◆ enter()

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

Alias for acquire().

References enter().

Referenced by enter().

◆ layer()

SyncLayer contur::CriticalSection::layer ( ) const
nodiscardoverridevirtualnoexcept

Layer classification forwarded from underlying primitive.

Implements contur::ISyncPrimitive.

References layer().

Referenced by layer().

◆ leave()

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

Alias for release().

References leave().

Referenced by leave().

◆ name()

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

Primitive name for diagnostics.

Implements contur::ISyncPrimitive.

References name().

Referenced by name().

◆ operator=() [1/2]

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

Copy assignment is disabled.

References CriticalSection().

◆ operator=() [2/2]

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

Move-assigns critical section state.

References CriticalSection().

◆ release()

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

Releases underlying primitive.

Implements contur::ISyncPrimitive.

References release().

Referenced by release().

◆ tryAcquire()

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

Non-blocking acquire on underlying primitive.

Implements contur::ISyncPrimitive.

References tryAcquire().

Referenced by tryAcquire().

◆ tryEnter()

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

Alias for tryAcquire().

References tryEnter().

Referenced by tryEnter().

Member Data Documentation

◆ impl_

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

Definition at line 60 of file critical_section.h.


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