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

Reentrant mutex with ownership tracking. More...

#include <mutex.h>

Inheritance diagram for contur::Mutex:
Collaboration diagram for contur::Mutex:

Public Member Functions

 Mutex ()
 Constructs an unlocked mutex.
 ~Mutex () override
 Mutex (const Mutex &)=delete
Mutexoperator= (const Mutex &)=delete
 Mutex (Mutex &&) noexcept
Mutexoperator= (Mutex &&) noexcept
Result< void > acquire (ProcessId pid) override
 Acquires the mutex for process pid.
Result< void > release (ProcessId pid) override
 Releases the mutex held by process pid.
Result< void > tryAcquire (ProcessId pid) override
 Attempts immediate acquire without enqueueing waiters.
std::string_view name () const noexcept override
 Primitive name for diagnostics.
bool isLocked () const noexcept
 True when the mutex is owned by some process.
std::optional< ProcessIdowner () const noexcept
 Current owner process ID, if locked.
std::size_t recursionDepth () const noexcept
 Reentrancy depth for owner.
std::size_t waitingCount () const noexcept
 Number of waiting processes.
Public Member Functions inherited from contur::ISyncPrimitive
virtual ~ISyncPrimitive ()=default

Private Attributes

std::unique_ptr< Impl > impl_

Detailed Description

Reentrant mutex with ownership tracking.

Definition at line 14 of file mutex.h.

Constructor & Destructor Documentation

◆ Mutex() [1/3]

contur::Mutex::Mutex ( )

Constructs an unlocked mutex.

◆ ~Mutex()

contur::Mutex::~Mutex ( )
override

◆ Mutex() [2/3]

contur::Mutex::Mutex ( const Mutex & )
delete

◆ Mutex() [3/3]

contur::Mutex::Mutex ( Mutex && )
noexcept

Member Function Documentation

◆ acquire()

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

Acquires the mutex for process pid.

Returns
Ok when acquired; ResourceBusy when owned by another process.

Implements contur::ISyncPrimitive.

◆ isLocked()

bool contur::Mutex::isLocked ( ) const
nodiscardnoexcept

True when the mutex is owned by some process.

◆ name()

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

Primitive name for diagnostics.

Implements contur::ISyncPrimitive.

◆ operator=() [1/2]

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

◆ operator=() [2/2]

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

◆ owner()

std::optional< ProcessId > contur::Mutex::owner ( ) const
nodiscardnoexcept

Current owner process ID, if locked.

◆ recursionDepth()

std::size_t contur::Mutex::recursionDepth ( ) const
nodiscardnoexcept

Reentrancy depth for owner.

◆ release()

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

Releases the mutex held by process pid.

Returns
Ok on success; PermissionDenied/InvalidState on misuse.

Implements contur::ISyncPrimitive.

◆ tryAcquire()

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

Attempts immediate acquire without enqueueing waiters.

Implements contur::ISyncPrimitive.

◆ waitingCount()

std::size_t contur::Mutex::waitingCount ( ) const
nodiscardnoexcept

Number of waiting processes.

Member Data Documentation

◆ impl_

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

Definition at line 54 of file mutex.h.


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