SourcePro® API Reference Guide

Product Documentation:
   SourcePro
Documentation Home
List of all members | Public Member Functions | Private Member Functions
RWTUnlockGuard< Resource > Class Template Reference

Guard class that releases its resource upon creation and acquires it upon destruction. More...

#include <rw/sync/RWTUnlockGuard.h>

Inheritance diagram for RWTUnlockGuard< Resource >:
RWTGuardBase< Resource >

Public Member Functions

 RWTUnlockGuard (Resource &resource)
 
 ~RWTUnlockGuard ()
 
- Public Member Functions inherited from RWTGuardBase< Resource >
 ~RWTGuardBase ()
 
void acquire ()
 
bool isAcquired () const
 
void release ()
 

Private Member Functions

 RWTUnlockGuard (const RWTUnlockGuard< Resource > &second)
 
RWTUnlockGuard< Resource > & operator= (const RWTUnlockGuard< Resource > &second)
 

Additional Inherited Members

- Protected Member Functions inherited from RWTGuardBase< Resource >
 RWTGuardBase (Resource &resource)
 
 RWTGuardBase (Resource &resource, bool acquired)
 
Resource & resource () const
 

Detailed Description

template<class Resource>
class RWTUnlockGuard< Resource >

RWTUnlockGuard is a guard class that releases its resource upon creation and acquires it upon destruction. Guard objects work in conjunction with block statements to establish an appropriate state upon creation, maintain that state for the duration of the block, and restore the original state upon destruction. For example, a guard may release a mutex when created and reacquire it when destructed. The class used as the actual template parameter for Resource must be one that provides acquire() and release() methods, such as the synchronization classes provided in this module.

Example
#include <rw/sync/RWMutexLock.h>
#include <rw/sync/RWTUnlockGuard.h>
// ...
void foo()
{
mutex.acquire();
// ... critical code
// temporarily release mutex for the duration of block:
{
RWTUnlockGuard<RWMutexLock> lock(mutex); // releases mutex
// ... anti-critical section
// Mutex will be reacquired in RWTUnlockGuard destructor.
}
// ... more critical code
mutex.release();
}
See also
RWTLockGuard

Constructor & Destructor Documentation

template<class Resource >
RWTUnlockGuard< Resource >::RWTUnlockGuard ( Resource &  resource)
inline

Releases the resource.

template<class Resource >
RWTUnlockGuard< Resource >::~RWTUnlockGuard ( )
inline

Reacquires the resource.

template<class Resource>
RWTUnlockGuard< Resource >::RWTUnlockGuard ( const RWTUnlockGuard< Resource > &  second)
private

Copy construction prohibited.

Member Function Documentation

template<class Resource>
RWTUnlockGuard<Resource>& RWTUnlockGuard< Resource >::operator= ( const RWTUnlockGuard< Resource > &  second)
private

Assignment prohibited.

Copyright © 2021 Rogue Wave Software, Inc., a Perforce company. All Rights Reserved.