![]() |
Contur 2
Educational OS kernel simulator
|
Critical-section adapter over a synchronization primitive. More...
#include <critical_section.h>
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. | |
| CriticalSection & | operator= (const CriticalSection &)=delete |
| Copy assignment is disabled. | |
| CriticalSection (CriticalSection &&) noexcept | |
| Move-constructs critical section state. | |
| CriticalSection & | operator= (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_ |
Critical-section adapter over a synchronization primitive.
Definition at line 13 of file critical_section.h.
|
explicit |
Constructs a critical section using provided primitive.
If primitive is null, an internal Mutex is used.
Referenced by CriticalSection(), CriticalSection(), operator=(), and operator=().
|
override |
Destroys critical-section adapter.
|
delete |
Copy construction is disabled.
References CriticalSection().
|
noexcept |
Move-constructs critical section state.
References CriticalSection().
Acquires underlying primitive.
Implements contur::ISyncPrimitive.
References acquire().
Referenced by acquire().
|
nodiscardoverridevirtualnoexcept |
Layer classification forwarded from underlying primitive.
Implements contur::ISyncPrimitive.
References layer().
Referenced by layer().
|
nodiscardoverridevirtualnoexcept |
Primitive name for diagnostics.
Implements contur::ISyncPrimitive.
References name().
Referenced by name().
|
delete |
Copy assignment is disabled.
References CriticalSection().
|
noexcept |
Move-assigns critical section state.
References CriticalSection().
Releases underlying primitive.
Implements contur::ISyncPrimitive.
References release().
Referenced by release().
Non-blocking acquire on underlying primitive.
Implements contur::ISyncPrimitive.
References tryAcquire().
Referenced by tryAcquire().
|
private |
Definition at line 60 of file critical_section.h.