NAME
ACE_Recursive_Thread_Mutex - Implement a C++ wrapper that allows nested acquisition and release of a mutex that occurs in the same thread.
SYNOPSIS
#include <ace/Synch.h>
class ACE_Recursive_Thread_Mutex
{
public:
ACE_Recursive_Thread_Mutex (LPCTSTR name = 0, void *arg = 0);
~ACE_Recursive_Thread_Mutex (void);
int remove (void);
int acquire (void);
int tryacquire (void);
int acquire_read (void);
int acquire_write (void);
int tryacquire_read (void);
int tryacquire_write (void);
int release (void);
ACE_thread_t get_thread_id (void);
int get_nesting_level (void);
void dump (void) const;
ACE_ALLOC_HOOK_DECLARE;
protected:
void set_thread_id (ACE_thread_t t);
ACE_recursive_thread_mutex_t recursive_mutex_;
int removed_;
private:
void operator= (const ACE_Recursive_Thread_Mutex &);
ACE_Recursive_Thread_Mutex (const ACE_Recursive_Thread_Mutex &);
};
DESCRIPTION
Wrappers for various synchronization routines.
This method should *not* be public (they hold no locks...)
void set_thread_id (ACE_thread_t t);
ACE_recursive_thread_mutex_t recursive_mutex_;
Recursive mutex.
int removed_;
Keeps track of whether remove has been called yet to avoid multiple remove calls, e.g., explicitly and implicitly in the destructor. This flag isn't protected by a lock, so make sure that you don't have multiple threads simultaneously calling remove on the same object, which is a bad idea anyway...
Prevent assignment and initialization.
void operator= (const ACE_Recursive_Thread_Mutex &);
ACE_Recursive_Thread_Mutex (const ACE_Recursive_Thread_Mutex &);
AUTHOR
Doug Schmidt
LIBRARY
ace