carb::tasking::SharedMutexWrapper

Defined in carb/tasking/TaskingUtils.h

class SharedMutexWrapper

Wrapper for a carb::tasking::SharedMutex that (mostly) conforms to C++ Named Requirements of SharedMutex.

Public Functions

inline SharedMutexWrapper()

Constructs a new SharedMutexWrapper object.

inline SharedMutexWrapper(ITasking*)

Constructs a new SharedMutexWrapper object.

Note

Deprecated: ITasking no longer needed.

inline ~SharedMutexWrapper()

Destructor.

Note

It is an error to destroy a shared mutex that is locked.

inline bool try_lock_shared()

Attempts to shared-lock the shared mutex immediately.

Note

It is an error to lock recursively or shared-lock when exclusive-locked, or vice versa.

Returns

true if the mutex was shared-locked; false otherwise

inline bool try_lock()

Attempts to exclusive-lock the shared mutex immediately.

Note

It is an error to lock recursively or shared-lock when exclusive-locked, or vice versa.

Returns

true if the mutex was shared-locked; false otherwise

template<class Rep, class Period>
inline bool try_lock_for(const std::chrono::duration<Rep, Period> &duration)

Attempts to exclusive-lock the shared mutex within a specified duration.

Note

It is an error to lock recursively or shared-lock when exclusive-locked, or vice versa.

Parameters

duration – The duration to wait for the mutex to be available

Returns

true if the mutex was exclusive-locked; false if the timeout period expired

template<class Rep, class Period>
inline bool try_lock_shared_for(const std::chrono::duration<Rep, Period> &duration)

Attempts to shared-lock the shared mutex within a specified duration.

Note

It is an error to lock recursively or shared-lock when exclusive-locked, or vice versa.

Parameters

duration – The duration to wait for the mutex to be available

Returns

true if the mutex was shared-locked; false if the timeout period expired

template<class Clock, class Duration>
inline bool try_lock_until(const std::chrono::time_point<Clock, Duration> &time_point)

Attempts to exclusive-lock the shared mutex until a specific clock time.

Note

It is an error to lock recursively or shared-lock when exclusive-locked, or vice versa.

Parameters

time_point – The clock time to wait until.

Returns

true if the mutex was exclusive-locked; false if the timeout period expired

template<class Clock, class Duration>
inline bool try_lock_shared_until(const std::chrono::time_point<Clock, Duration> &time_point)

Attempts to shared-lock the shared mutex until a specific clock time.

Note

It is an error to lock recursively or shared-lock when exclusive-locked, or vice versa.

Parameters

time_point – The clock time to wait until.

Returns

true if the mutex was shared-locked; false if the timeout period expired

inline void lock_shared()

Shared-locks the shared mutex, waiting until it becomes available.

Note

It is an error to lock recursively or shared-lock when exclusive-locked, or vice versa.

inline void unlock_shared()

Unlocks a mutex previously shared-locked by this thread/task.

Note

It is undefined behavior to unlock a mutex that is not owned by the current thread or task.

inline void lock()

Exclusive-locks the shared mutex, waiting until it becomes available.

Note

It is an error to lock recursively or shared-lock when exclusive-locked, or vice versa.

inline void unlock()

Unlocks a mutex previously exclusive-locked by this thread/task.

Note

It is undefined behavior to unlock a mutex that is not owned by the current thread or task.

inline operator SharedMutex*() const

Convertible to SharedMutex*.

inline ITasking *getTasking() const

Returns the acquired ITasking interface that was used to construct this object.

Note

Deprecated: Use carb::getCachedInterface instead.