17 #ifndef __TBB_spin_rw_mutex_H    18 #define __TBB_spin_rw_mutex_H    27 #if __TBB_TSX_AVAILABLE    28 namespace interface8 { 
namespace internal {
    29     class x86_rtm_rw_mutex;
    71 #if TBB_USE_THREADING_TOOLS    87 #if __TBB_TSX_AVAILABLE    88         friend class tbb::interface8::internal::x86_rtm_rw_mutex;
   128 #if TBB_USE_THREADING_TOOLS||TBB_USE_ASSERT   141 #if TBB_USE_THREADING_TOOLS||TBB_USE_ASSERT   188 #if TBB_USE_THREADING_TOOLS||TBB_USE_ASSERT   227 #if __TBB_TSX_AVAILABLE   232 namespace interface8 {
   242 #if __TBB_TSX_AVAILABLE bool __TBB_EXPORTED_METHOD internal_try_acquire_reader()
Internal try_acquire read lock.
 
void __TBB_EXPORTED_METHOD internal_release_reader()
Internal release read lock.
 
bool __TBB_EXPORTED_METHOD internal_try_acquire_writer()
Internal try_acquire write lock.
 
void acquire(spin_rw_mutex &m, bool write=true)
Acquire lock on given mutex.
 
bool try_lock()
Try acquiring writer lock (non-blocking)
 
bool downgrade_to_reader()
Downgrade writer to become a reader.
 
void release()
Release lock.
 
#define __TBB_DEFINE_PROFILING_SET_NAME(sync_object_type)
 
bool upgrade_to_writer()
Upgrade reader to become a writer.
 
bool __TBB_EXPORTED_METHOD internal_acquire_writer()
Internal acquire write lock.
 
bool try_acquire(spin_rw_mutex &m, bool write=true)
Try acquire lock on given mutex.
 
spin_rw_mutex_v3 spin_rw_mutex
 
Fast, unfair, spinning reader-writer lock with backoff and writer-preference.
 
spin_rw_mutex_v3()
Construct unacquired mutex.
 
static const state_t ONE_READER
 
bool try_lock_read()
Try acquiring reader lock (non-blocking)
 
~scoped_lock()
Release lock (if lock is held).
 
scoped_lock()
Construct lock that has not acquired a mutex.
 
void __TBB_AtomicAND(volatile void *operand, uintptr_t addend)
 
void lock()
Acquire writer lock.
 
state_t state
State of lock.
 
static const bool is_fair_mutex
 
interface7::internal::padded_mutex< tbb::spin_rw_mutex, true > speculative_spin_rw_mutex
A cross-platform spin reader/writer mutex with speculative lock acquisition.
 
static const state_t BUSY
 
static const state_t WRITER_PENDING
 
void lock_read()
Acquire reader lock.
 
scoped_lock(spin_rw_mutex &m, bool write=true)
Acquire lock on given mutex.
 
void __TBB_EXPORTED_METHOD internal_construct()
 
static const bool is_recursive_mutex
 
Base class for types that should not be copied or assigned.
 
static const state_t WRITER
 
spin_rw_mutex * mutex
The pointer to the current mutex that is held, or NULL if no mutex is held.
 
static const state_t READERS
 
The scoped locking pattern.
 
#define __TBB_EXPORTED_METHOD
 
#define __TBB_FetchAndAddWrelease(P, V)
 
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
 
void __TBB_EXPORTED_METHOD internal_acquire_reader()
Internal acquire read lock.
 
void __TBB_EXPORTED_METHOD internal_release_writer()
Out of line code for releasing a write lock.
 
bool __TBB_EXPORTED_METHOD internal_upgrade()
Internal upgrade reader to become a writer.
 
static const bool is_rw_mutex
 
bool is_writer
If mutex!=NULL, then is_writer is true if holding a writer lock, false if holding a reader lock.
 
void __TBB_EXPORTED_METHOD internal_downgrade()
Out of line code for downgrading a writer to a reader.
 
void unlock()
Release lock.