|
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 (const RWLock &other)=delete |
| Copy constructor. | |
| constexpr | RWLock (RWLock &&other) noexcept |
| Move constructor. | |
| constexpr | RWLock (const RWLockRef &other)=delete |
| constexpr | RWLock (RWLockRef &&other)=delete |
| RWLock () | |
| Create a new read/write lock. | |
| ~RWLock () | |
| Destructor. | |
| constexpr RWLock & | operator= (RWLock &&other) noexcept |
| Assignment operator. | |
| RWLock & | operator= (const RWLock &other)=delete |
| Assignment operator. | |
| 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 | ResourceBase (RawPointer resource) |
| Constructs from resource pointer. | |
| constexpr | ResourceBase (std::nullptr_t=nullptr) |
| Constructs null/invalid. | |
| Public Member Functions inherited from SDL::ResourceBase< RWLockRaw > | |
| 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< RWLockRaw > | |
| using | RawPointer |
| The underlying raw pointer type. | |
| using | RawConstPointer |
| The underlying const raw pointer type. | |
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 |