BDE 4.14.0 Production release
Loading...
Searching...
No Matches
bslmt::LockGuardTryLock< T > Class Template Reference

#include <bslmt_lockguard.h>

Inheritance diagram for bslmt::LockGuardTryLock< T >:
bslmt::TryLockGuard< T >

Public Member Functions

 LockGuardTryLock (T *lock, int attempts=1)
 
 ~LockGuardTryLock ()
 
T * release ()
 
T * ptr () const
 

Detailed Description

template<class T>
class bslmt::LockGuardTryLock< T >

This class template implements a guard for tentative acquisition and release of synchronization resources (i.e., locks).

See bslmt_lockguard

Constructor & Destructor Documentation

◆ LockGuardTryLock()

template<class T >
bslmt::LockGuardTryLock< T >::LockGuardTryLock ( T *  lock,
int  attempts = 1 
)
explicit

Create a scoped guard that conditionally manages the specified lock (if non-null) and invokes lock->tryLock() until the lock is acquired, or until the optionally specified attempts have been made to acquire the lock. If attempts is not specified only one attempt is made to acquire the lock. Supplying a null lock has no effect. The behavior is undefined unless lock (if non-null) is not already locked by this thread and 0 < attempts. Note that lock must remain valid throughout the lifetime of this guard, or until release is called.

◆ ~LockGuardTryLock()

template<class T >
bslmt::LockGuardTryLock< T >::~LockGuardTryLock ( )
inline

Destroy this scoped guard and invoke the unlock method on the lock object under management by this guard, if any. If no lock is currently being managed, this method has no effect.

Member Function Documentation

◆ ptr()

template<class T >
T * bslmt::LockGuardTryLock< T >::ptr ( ) const
inline

Return the address of the modifiable lock object under management by this guard, or 0 if no lock is currently being managed.

◆ release()

template<class T >
T * bslmt::LockGuardTryLock< T >::release ( )
inline

Return the address of the modifiable lock object under management by this guard, and release the lock from further management by this guard. If no lock is currently being managed, return 0 with no other effect. Note that this operation does not unlock the lock object (if any) that was under management.


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