added epicsAutoMutexRelease

This commit is contained in:
Jeff Hill
2001-03-21 01:02:35 +00:00
parent f125776bcb
commit 0a9f914076
+24
View File
@@ -41,6 +41,19 @@ private:
epicsMutex & rMutex;
};
// Automatically releases and reapplies the mutex.
// This is for use in situations where C++ exceptions are possible.
class epicsAutoMutexRelease {
public:
epicsAutoMutexRelease ( epicsMutex & );
~epicsAutoMutexRelease ();
private:
epicsAutoMutexRelease ( const epicsAutoMutex & );
epicsAutoMutexRelease & operator = ( const epicsAutoMutex & );
epicsMutex & rMutex;
};
#endif /*__cplusplus*/
#ifdef __cplusplus
@@ -147,6 +160,17 @@ inline epicsAutoMutex :: ~epicsAutoMutex ()
this->rMutex.unlock ();
}
inline epicsAutoMutexRelease :: epicsAutoMutexRelease ( epicsMutex & mutexIn ) :
rMutex ( mutexIn )
{
this->rMutex.unlock ();
}
inline epicsAutoMutexRelease :: ~epicsAutoMutexRelease ()
{
this->rMutex.lock ();
}
#endif /*__cplusplus*/
#endif /* epicsMutexh */