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

Counting semaphore synchronization primitive. More...

#include <semaphore.h>

Inheritance diagram for contur::Semaphore:
Collaboration diagram for contur::Semaphore:

Public Member Functions

 Semaphore (std::size_t initialCount=1, std::size_t maxCount=1)
 Constructs semaphore with initial and maximum count.
 ~Semaphore () override
 Semaphore (const Semaphore &)=delete
Semaphoreoperator= (const Semaphore &)=delete
 Semaphore (Semaphore &&) noexcept
Semaphoreoperator= (Semaphore &&) noexcept
Result< void > acquire (ProcessId pid) override
 Acquires one semaphore unit.
Result< void > release (ProcessId pid) override
 Releases one semaphore unit.
Result< void > tryAcquire (ProcessId pid) override
 Non-blocking acquire attempt.
std::string_view name () const noexcept override
 Primitive name for diagnostics.
std::size_t count () const noexcept
 Current available count.
std::size_t maxCount () const noexcept
 Configured maximum count.
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

Counting semaphore synchronization primitive.

Definition at line 13 of file semaphore.h.

Constructor & Destructor Documentation

◆ Semaphore() [1/3]

contur::Semaphore::Semaphore ( std::size_t initialCount = 1,
std::size_t maxCount = 1 )
explicit

Constructs semaphore with initial and maximum count.

◆ ~Semaphore()

contur::Semaphore::~Semaphore ( )
override

◆ Semaphore() [2/3]

contur::Semaphore::Semaphore ( const Semaphore & )
delete

◆ Semaphore() [3/3]

contur::Semaphore::Semaphore ( Semaphore && )
noexcept

Member Function Documentation

◆ acquire()

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

Acquires one semaphore unit.

Implements contur::ISyncPrimitive.

◆ count()

std::size_t contur::Semaphore::count ( ) const
nodiscardnoexcept

Current available count.

◆ maxCount()

std::size_t contur::Semaphore::maxCount ( ) const
nodiscardnoexcept

Configured maximum count.

◆ name()

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

Primitive name for diagnostics.

Implements contur::ISyncPrimitive.

◆ operator=() [1/2]

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

◆ operator=() [2/2]

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

◆ release()

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

Releases one semaphore unit.

Implements contur::ISyncPrimitive.

◆ tryAcquire()

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

Non-blocking acquire attempt.

Implements contur::ISyncPrimitive.

◆ waitingCount()

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

Number of waiting processes.

Member Data Documentation

◆ impl_

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

Definition at line 48 of file semaphore.h.


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