|
SDL3pp
A slim C++ wrapper for SDL3
|
A mutex that allows read-only threads to run in parallel. More...
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 RWLock & | operator= (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 ResourceBaseT & | operator= (const ResourceBaseT &)=default |
| Assignment operator. | |
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.
|
inlineexplicitconstexprnoexcept |