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

A mutex that allows read-only threads to run in parallel. More...

Inheritance diagram for SDL::RWLock:
[legend]

Public Member Functions

constexpr RWLock (RWLockRaw resource) noexcept
 Constructs from raw RWLock.
constexpr RWLock (RWLock &&other) noexcept
 Move constructor.
 RWLock ()
 Create a new read/write lock.
 ~RWLock ()
 Destructor.
constexpr RWLockoperator= (RWLock &&other) noexcept
 Assignment operator.
Public Member Functions inherited from SDL::RWLockBase
void Destroy ()
 Destroy a read/write lock created with CreateRWLock().
void LockForReading ()
 Lock the read/write lock for read only operations.
void LockForWriting ()
 Lock the read/write lock for write operations.
bool TryLockForReading ()
 Try to lock a read/write lock for reading without blocking.
bool TryLockForWriting ()
 Try to lock a read/write lock for writing without blocking.
void Unlock ()
 Unlock the read/write lock.
constexpr ResourceBaseT ()=default
 Default constructor, creates null/invalid resource.
constexpr ResourceBaseT (RawPointer resource)
 Constructs from resource pointer.
constexpr ResourceBaseT (std::nullptr_t)
 Constructs null/invalid.
constexpr ResourceBaseT (const ResourceBaseT &)=default
 Copy constructor.
constexpr ResourceBaseT (ResourceBaseT &&) noexcept=default
 Move constructor.
Public Member Functions inherited from SDL::ResourceBaseT< RWLockRaw >
constexpr ResourceBaseT ()=default
 Default constructor, creates null/invalid resource.
constexpr operator bool () const
 Converts to bool.
constexpr auto operator<=> (const ResourceBaseT &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::ResourceBaseT< RWLockRaw >
using RawPointer
 The underlying raw pointer type.
using RawConstPointer
 The underlying const raw pointer type.
Protected Member Functions inherited from SDL::ResourceBaseT< RWLockRaw >
constexpr ~ResourceBaseT ()=default
 Destructor.
constexpr ResourceBaseToperator= (const ResourceBaseT &)=default
 Assignment operator.

Detailed Description

A mutex that allows read-only threads to run in parallel.

A rwlock is roughly the same concept as Mutex, but allows threads that request read-only access to all hold the lock at the same time. If a thread requests write access, it will block until all read-only threads have released the lock, and no one else can hold the thread (for reading or writing) at the same time as the writing thread.

This can be more efficient in cases where several threads need to access data frequently, but changes to that data are rare.

There are other rules that apply to rwlocks that don't apply to mutexes, about how threads are scheduled and when they can be recursively locked. These are documented in the other rwlock functions.

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

Constructor & Destructor Documentation

◆ RWLock()

SDL::RWLock::RWLock ( RWLockRaw resource)
inlineexplicitconstexprnoexcept

Constructs from raw RWLock.

Parameters
resourcea RWLockRaw 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: