The Gaudi Framework  master (ff829712)
Loading...
Searching...
No Matches
LockedHandle< T, MutexType > Class Template Reference

Provides automatic lock/unlock access to a class upon deref of ptr. More...

#include </builds/gaudi/Gaudi/GaudiKernel/include/GaudiKernel/LockedHandle.h>

Collaboration diagram for LockedHandle< T, MutexType >:

Classes

class  ConstGuard
 
class  Guard
 

Public Member Functions

 LockedHandle (T *ptr, MutexType &mut)
 
 LockedHandle (T *ptr, MutexType *mut)
 
 LockedHandle (T *ptr)
 
 LockedHandle ()
 
void set (T *ptr, MutexType *mut)
 
void setMutex (MutexType *mut)
 
T * get () const
 
Guard operator* ()
 Aquire and release the lock before and after the object is accessed.
 
Guard operator-> ()
 Aquire and release the lock before and after the object is accessed.
 
ConstGuard operator* () const
 Aquire and release the lock before and after the const object is accessed.
 
ConstGuard operator-> () const
 Aquire and release the lock before and after the const object is accessed.
 
 operator bool () const
 

Private Attributes

T * m_ptr
 
MutexType * m_mutex
 

Detailed Description

template<class T, class MutexType = std::mutex>
class LockedHandle< T, MutexType >

Provides automatic lock/unlock access to a class upon deref of ptr.

default type of mutex to use is a std::mutex, but this can be overridden with a second template parameter, as long as the type provides the lock() and unlock() functions

std::mutex the_mutex;
Obj *o = new Obj();
LockedHandle<Obj> lh(o, &the_mutex);
o->doSomething();
LockedHandle(T *ptr, MutexType &mut)
Author
Charles Leggett / Goetz Gaycken
Date
2016-07-01

Definition at line 36 of file LockedHandle.h.

Constructor & Destructor Documentation

◆ LockedHandle() [1/4]

template<class T, class MutexType = std::mutex>
LockedHandle< T, MutexType >::LockedHandle ( T * ptr,
MutexType & mut )
inline

Definition at line 38 of file LockedHandle.h.

38: m_ptr( ptr ), m_mutex( &mut ) {}
Provides automatic lock/unlock access to a class upon deref of ptr.
MutexType * m_mutex

◆ LockedHandle() [2/4]

template<class T, class MutexType = std::mutex>
LockedHandle< T, MutexType >::LockedHandle ( T * ptr,
MutexType * mut )
inline

Definition at line 39 of file LockedHandle.h.

39: m_ptr( ptr ), m_mutex( mut ) {}

◆ LockedHandle() [3/4]

template<class T, class MutexType = std::mutex>
LockedHandle< T, MutexType >::LockedHandle ( T * ptr)
inline

Definition at line 40 of file LockedHandle.h.

40: m_ptr( ptr ), m_mutex( 0 ) {}

◆ LockedHandle() [4/4]

template<class T, class MutexType = std::mutex>
LockedHandle< T, MutexType >::LockedHandle ( )
inline

Definition at line 41 of file LockedHandle.h.

41: m_ptr( nullptr ), m_mutex( nullptr ) {}

Member Function Documentation

◆ get()

template<class T, class MutexType = std::mutex>
T * LockedHandle< T, MutexType >::get ( ) const
inline

Definition at line 50 of file LockedHandle.h.

50{ return m_ptr; }

◆ operator bool()

template<class T, class MutexType = std::mutex>
LockedHandle< T, MutexType >::operator bool ( ) const
inline

Definition at line 100 of file LockedHandle.h.

100{ return m_ptr; }

◆ operator*() [1/2]

template<class T, class MutexType = std::mutex>
Guard LockedHandle< T, MutexType >::operator* ( )
inline

Aquire and release the lock before and after the object is accessed.

Definition at line 89 of file LockedHandle.h.

◆ operator*() [2/2]

template<class T, class MutexType = std::mutex>
ConstGuard LockedHandle< T, MutexType >::operator* ( ) const
inline

Aquire and release the lock before and after the const object is accessed.

Definition at line 95 of file LockedHandle.h.

◆ operator->() [1/2]

template<class T, class MutexType = std::mutex>
Guard LockedHandle< T, MutexType >::operator-> ( )
inline

Aquire and release the lock before and after the object is accessed.

Definition at line 92 of file LockedHandle.h.

92{ return Guard( m_ptr, *m_mutex ); }

◆ operator->() [2/2]

template<class T, class MutexType = std::mutex>
ConstGuard LockedHandle< T, MutexType >::operator-> ( ) const
inline

Aquire and release the lock before and after the const object is accessed.

Definition at line 98 of file LockedHandle.h.

98{ return ConstGuard( m_ptr, *m_mutex ); }

◆ set()

template<class T, class MutexType = std::mutex>
void LockedHandle< T, MutexType >::set ( T * ptr,
MutexType * mut )
inline

Definition at line 43 of file LockedHandle.h.

43 {
44 m_ptr = ptr;
45 m_mutex = mut;
46 }

◆ setMutex()

template<class T, class MutexType = std::mutex>
void LockedHandle< T, MutexType >::setMutex ( MutexType * mut)
inline

Definition at line 48 of file LockedHandle.h.

48{ m_mutex = mut; }

Member Data Documentation

◆ m_mutex

template<class T, class MutexType = std::mutex>
MutexType* LockedHandle< T, MutexType >::m_mutex
mutableprivate

Definition at line 104 of file LockedHandle.h.

◆ m_ptr

template<class T, class MutexType = std::mutex>
T* LockedHandle< T, MutexType >::m_ptr
private

Definition at line 103 of file LockedHandle.h.


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