#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 &);};
void set_thread_id (ACE_thread_t t);
ACE_recursive_thread_mutex_t recursive_mutex_;
int removed_;
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...
void operator= (const ACE_Recursive_Thread_Mutex &);
ACE_Recursive_Thread_Mutex (const ACE_Recursive_Thread_Mutex &);