SDL3pp
A slim C++ wrapper for SDL3
Loading...
Searching...
No Matches
SDL::Semaphore Struct Reference

A means to manage access to a resource, by count, between threads. More...

Inheritance diagram for SDL::Semaphore:
[legend]

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 Semaphoreoperator= (Semaphore &&other) noexcept
 Assignment operator.
Semaphoreoperator= (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.

Detailed Description

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)

Since
This struct is available since SDL 3.2.0.
Category:
Resource

Constructor & Destructor Documentation

◆ Semaphore()

SDL::Semaphore::Semaphore ( SemaphoreRaw resource)
inlineexplicitconstexprnoexcept

Constructs from raw Semaphore.

Parameters
resourcea SemaphoreRaw to be wrapped.

This assumes the ownership, call release() if you need to take back.


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