spin_rw_mutex¶
[mutex.spin_rw_mutex]
A spin_rw_mutex
is a class that models the ReaderWriterMutex requirement
and satisfies all requirements of shared mutex type from the [thread.sharedmutex.requirements] ISO C++ section.
The spin_rw_mutex
class is unfair spinning reader-writer lock with backoff and writer-preference.
// Defined in header <oneapi/tbb/spin_rw_mutex.h>
namespace oneapi {
namespace tbb {
class spin_rw_mutex {
public:
spin_rw_mutex() noexcept;
~spin_rw_mutex();
spin_rw_mutex(const spin_rw_mutex&) = delete;
spin_rw_mutex& operator=(const spin_rw_mutex&) = delete;
class scoped_lock;
// exclusive ownership
void lock();
bool try_lock();
void unlock();
// shared ownership
void lock_shared();
bool try_lock_shared();
void unlock_shared();
static constexpr bool is_rw_mutex = true;
static constexpr bool is_recursive_mutex = false;
static constexpr bool is_fair_mutex = false;
};
} // namespace tbb
} // namespace oneapi
Member classes¶
-
class scoped_lock¶
Corresponding scoped-lock class. See the ReaderWriterMutex requirement.
Member functions¶
-
spin_rw_mutex()¶
Constructs unlocked
spin_rw_mutex
.
-
~spin_rw_mutex()¶
Destroys unlocked
spin_rw_mutex
.
-
void lock()¶
Acquires a lock. Spins if the lock is taken.
-
bool try_lock()¶
Attempts to acquire a lock (non-blocking) on write. Returns true if the lock is acquired on write; false otherwise.
-
void unlock()¶
Releases a write lock, held by the current thread.
Acquires a lock on read. Spins if the lock is taken on write already.
Attempts to acquire the lock (non-blocking) on read. Returns true if the lock is acquired on read; false, otherwise.
Releases a read lock held by the current thread.