Loading...
Searching...
No Matches
TfSpinRWMutex::ScopedLock Struct Reference

Scoped lock utility class. More...

#include <spinRWMutex.h>

Public Member Functions

 ScopedLock (TfSpinRWMutex &m, bool write=true)
 Construct a scoped lock for mutex m and acquire either a read or a write lock depending on write.
 
 ScopedLock ()
 Construct a scoped lock not associated with a mutex.
 
 ~ScopedLock ()
 If this scoped lock is acquired for either read or write, Release() it.
 
void Acquire (TfSpinRWMutex &m, bool write=true)
 If the current scoped lock is acquired, Release() it, then associate this lock with m and acquire either a read or a write lock, depending on write.
 
void Acquire (bool write=true)
 Acquire either a read or write lock on this lock's associated mutex depending on write.
 
bool TryAcquire (TfSpinRWMutex &m, bool write=true)
 If the current scoped lock is acquired, Release() it, then associate this lock with m and try to acquire either a read or a write lock, depending on write.
 
bool TryAcquire (bool write=true)
 Try to acquire either a read or a write lock on this lock's associated mutex.
 
void Release ()
 Release the currently required lock on the associated mutex.
 
void AcquireRead ()
 Acquire a read lock on this lock's associated mutex.
 
bool TryAcquireRead ()
 Try to acquire a read lock on this lock's associated mutex.
 
void AcquireWrite ()
 Acquire a write lock on this lock's associated mutex.
 
bool TryAcquireWrite ()
 Try to acquire a write lock on this lock's associated mutex.
 
bool UpgradeToWriter ()
 Change this lock's acquisition state from a read lock to a write lock.
 
bool DowngradeToReader ()
 Change this lock's acquisition state from a write lock to a read lock.
 

Static Public Attributes

static constexpr int NotAcquired = 0
 
static constexpr int ReadAcquired = 1
 
static constexpr int WriteAcquired = 2
 

Detailed Description

Scoped lock utility class.

API modeled roughly after tbb::spin_rw_mutex::scoped_lock.

Definition at line 62 of file spinRWMutex.h.

Constructor & Destructor Documentation

◆ ScopedLock() [1/2]

ScopedLock ( TfSpinRWMutex m,
bool  write = true 
)
inlineexplicit

Construct a scoped lock for mutex m and acquire either a read or a write lock depending on write.

Definition at line 71 of file spinRWMutex.h.

◆ ScopedLock() [2/2]

ScopedLock ( )
inline

Construct a scoped lock not associated with a mutex.

Definition at line 78 of file spinRWMutex.h.

◆ ~ScopedLock()

~ScopedLock ( )
inline

If this scoped lock is acquired for either read or write, Release() it.

Definition at line 82 of file spinRWMutex.h.

Member Function Documentation

◆ Acquire() [1/2]

void Acquire ( bool  write = true)
inline

Acquire either a read or write lock on this lock's associated mutex depending on write.

This lock must be associated with a mutex (typically by construction or by a call to Acquire() that takes a mutex). This lock must not already be acquired when calling Acquire().

Definition at line 100 of file spinRWMutex.h.

◆ Acquire() [2/2]

void Acquire ( TfSpinRWMutex m,
bool  write = true 
)
inline

If the current scoped lock is acquired, Release() it, then associate this lock with m and acquire either a read or a write lock, depending on write.

Definition at line 89 of file spinRWMutex.h.

◆ AcquireRead()

void AcquireRead ( )
inline

Acquire a read lock on this lock's associated mutex.

This lock must not already be acquired when calling AcquireRead().

Definition at line 145 of file spinRWMutex.h.

◆ AcquireWrite()

void AcquireWrite ( )
inline

Acquire a write lock on this lock's associated mutex.

This lock must not already be acquired when calling AcquireWrite().

Definition at line 167 of file spinRWMutex.h.

◆ DowngradeToReader()

bool DowngradeToReader ( )
inline

Change this lock's acquisition state from a write lock to a read lock.

This lock must already be acquired for writing. Return true if the downgrade occurred without releasing the write in the interim, false if it was released and other writers may have intervened.

Definition at line 203 of file spinRWMutex.h.

◆ Release()

void Release ( )
inline

Release the currently required lock on the associated mutex.

If this lock is not currently acquired, silently do nothing.

Definition at line 129 of file spinRWMutex.h.

◆ TryAcquire() [1/2]

bool TryAcquire ( bool  write = true)
inline

Try to acquire either a read or a write lock on this lock's associated mutex.

The lock must not already be acquired when calling TryAcquire(). Return true if the lock was successfully acquired, false if not.

Definition at line 123 of file spinRWMutex.h.

◆ TryAcquire() [2/2]

bool TryAcquire ( TfSpinRWMutex m,
bool  write = true 
)
inline

If the current scoped lock is acquired, Release() it, then associate this lock with m and try to acquire either a read or a write lock, depending on write.

Return true if successfully acquired, false if not.

Definition at line 113 of file spinRWMutex.h.

◆ TryAcquireRead()

bool TryAcquireRead ( )
inline

Try to acquire a read lock on this lock's associated mutex.

The lock must not already be acquired when calling TryAcquireRead(). Return true if the lock was successfully acquired, false if not.

Definition at line 155 of file spinRWMutex.h.

◆ TryAcquireWrite()

bool TryAcquireWrite ( )
inline

Try to acquire a write lock on this lock's associated mutex.

The lock must not already be acquired when calling TryAcquireWrite(). Return true if the lock was successfully acquired, false if not.

Definition at line 177 of file spinRWMutex.h.

◆ UpgradeToWriter()

bool UpgradeToWriter ( )
inline

Change this lock's acquisition state from a read lock to a write lock.

This lock must already be acquired for reading. Return true if the upgrade occurred without releasing the read lock, false if it was released.

Definition at line 191 of file spinRWMutex.h.

Member Data Documentation

◆ NotAcquired

constexpr int NotAcquired = 0
staticconstexpr

Definition at line 65 of file spinRWMutex.h.

◆ ReadAcquired

constexpr int ReadAcquired = 1
staticconstexpr

Definition at line 66 of file spinRWMutex.h.

◆ WriteAcquired

constexpr int WriteAcquired = 2
staticconstexpr

Definition at line 67 of file spinRWMutex.h.


The documentation for this struct was generated from the following file: