|
SDL3pp
A slim C++ wrapper for SDL3
|
A means to manage access to a resource, by count, between threads. More...
Public Member Functions | |
| constexpr | Semaphore (SemaphoreRaw resource) noexcept |
| Constructs from raw Semaphore. | |
| constexpr | Semaphore (const Semaphore &other)=delete |
| Copy constructor. | |
| constexpr | Semaphore (Semaphore &&other) noexcept |
| Move constructor. | |
| constexpr | Semaphore (const SemaphoreRef &other)=delete |
| constexpr | Semaphore (SemaphoreRef &&other)=delete |
| Semaphore (Uint32 initial_value) | |
| Create a semaphore. | |
| ~Semaphore () | |
| Destructor. | |
| constexpr Semaphore & | operator= (Semaphore &&other) noexcept |
| Assignment operator. | |
| Semaphore & | operator= (const Semaphore &other)=delete |
| Assignment operator. | |
| void | Destroy () |
| Destroy a semaphore. | |
| void | Wait () |
| Wait until a semaphore has a positive value and then decrements it. | |
| bool | TryWait () |
| See if a semaphore has a positive value and decrement it if it does. | |
| bool | WaitTimeout (std::chrono::milliseconds timeout) |
| Wait until a semaphore has a positive value and then decrements it. | |
| void | Signal () |
| Atomically increment a semaphore's value and wake waiting threads. | |
| Uint32 | GetValue () const |
| Get the current value of a semaphore. | |
| constexpr | ResourceBase (RawPointer resource) |
| Constructs from resource pointer. | |
| constexpr | ResourceBase (std::nullptr_t=nullptr) |
| Constructs null/invalid. | |
| Public Member Functions inherited from SDL::ResourceBase< SemaphoreRaw > | |
| constexpr | ResourceBase (RawPointer resource) |
| Constructs from resource pointer. | |
| constexpr | operator bool () const |
| Converts to bool. | |
| constexpr auto | operator<=> (const ResourceBase &other) const=default |
| Comparison. | |
| constexpr RawConstPointer | operator-> () const noexcept |
| member access to underlying resource pointer. | |
| constexpr RawPointer | get () const noexcept |
| Retrieves underlying resource pointer. | |
| constexpr RawPointer | release () noexcept |
| Retrieves underlying resource pointer and clear this. | |
Additional Inherited Members | |
| Public Types inherited from SDL::ResourceBase< SemaphoreRaw > | |
| using | RawPointer |
| The underlying raw pointer type. | |
| using | RawConstPointer |
| The underlying const raw pointer type. | |
A means to manage access to a resource, by count, between threads.
Semaphores (specifically, "counting semaphores"), let X number of threads request access at the same time, each thread granted access decrementing a counter. When the counter reaches zero, future requests block until a prior thread releases their request, incrementing the counter again.
Wikipedia has a thorough explanation of the concept:
https://en.wikipedia.org/wiki/Semaphore_(programming)
|
inlineexplicitconstexprnoexcept |
Constructs from raw Semaphore.
| resource | a SemaphoreRaw to be wrapped. |
This assumes the ownership, call release() if you need to take back.