Thread_Manager
.
#include <ace/Thread_Manager.h>
class ACE_Thread_Descriptor : public ACE_Thread_Descriptor_Base {
public:
friend class ACE_At_Thread_Exit;
friend class ACE_Thread_Manager;
friend class ACE_Double_Linked_List<ACE_Thread_Descriptor>;
friend class ACE_Double_Linked_List_Iterator<ACE_Thread_Descriptor>;ACE_Thread_Descriptor (void);
ACE_thread_t self (void);
void self (ACE_hthread_t &);
void dump (void) const;
void log_msg_cleanup(ACE_Log_Msg* log_msg);
int at_exit (ACE_At_Thread_Exit* cleanup);
int at_exit (ACE_At_Thread_Exit& cleanup);
int at_exit ( void *object, ACE_CLEANUP_FUNC cleanup_hook, void *param );
~ACE_Thread_Descriptor (void);
void acquire_release (void);
ACE_INLINE_FOR_GNUC void set_next (ACE_Thread_Descriptor *td);
ACE_INLINE_FOR_GNUC ACE_Thread_Descriptor *get_next (void);
private:
void at_pop (int apply = 1);
void at_push (ACE_At_Thread_Exit* cleanup, int is_owner = 0);
void do_at_exit (void);
void terminate (void);
ACE_Log_Msg *log_msg_;
ACE_At_Thread_Exit *at_exit_list_;
ACE_Cleanup_Info cleanup_info_;
ACE_Thread_Manager* tm_;
ACE_DEFAULT_THREAD_MANAGER_LOCK *sync_;
int terminated_;
};
ACE_Thread_Descriptor (void);
ACE_thread_t self (void);
void self (ACE_hthread_t &);
void dump (void) const;
void log_msg_cleanup(ACE_Log_Msg* log_msg);
int at_exit (ACE_At_Thread_Exit* cleanup);
int at_exit (ACE_At_Thread_Exit& cleanup);
int at_exit (
void *object,
ACE_CLEANUP_FUNC cleanup_hook,
void *param
);
~ACE_Thread_Descriptor (void);
void acquire_release (void);
ACE_INLINE_FOR_GNUC void set_next (ACE_Thread_Descriptor *td);
ACE_INLINE_FOR_GNUC ACE_Thread_Descriptor *get_next (void);
next_
pointer. These are required by the
ACE_Free_List. ACE_INLINE is specified here because one version
of g++ couldn't grok this code without it.