Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

ACE_Thread_Descriptor Class Reference

Information for controlling threads that run under the control of the <Thread_Manager>. More...

#include <Thread_Manager.h>

Inheritance diagram for ACE_Thread_Descriptor

Inheritance graph
[legend]
Collaboration diagram for ACE_Thread_Descriptor:

Collaboration graph
[legend]
List of all members.

Public Methods

 ACE_Thread_Descriptor (void)
ACE_thread_t self (void) const
 Unique thread id.

void self (ACE_hthread_t &)
 Unique handle to thread (used by Win32 and AIX).

void dump (void) const
 Dump the state of an object.

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)
 Register an At_Thread_Exit hook and the ownership is retained for the caller. Normally used when the at_exit hook is created in stack.

int at_exit (void *object, ACE_CLEANUP_FUNC cleanup_hook, void *param)
 ~ACE_Thread_Descriptor (void)
 Do nothing destructor to keep some compilers happy.

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) const

Private Methods

void reset (ACE_Thread_Manager *tm)
 Reset this thread descriptor.

void at_pop (int apply = 1)
 Pop an At_Thread_Exit from at thread termination list, apply the at if apply is true.

void at_push (ACE_At_Thread_Exit* cleanup, int is_owner = 0)
 Push an At_Thread_Exit to at thread termination list and set the ownership of at.

void do_at_exit (void)
 Run the AT_Thread_Exit hooks.

void terminate (void)
 terminate realize the cleanup process to thread termination.


Private Attributes

ACE_Log_Msglog_msg_
 Thread_Descriptor is the ownership of ACE_Log_Msg if log_msg_!=0 This can occur because ACE_TSS_cleanup was executed before terminate.

ACE_At_Thread_Exitat_exit_list_
 The AT_Thread_Exit list.

ACE_Cleanup_Info cleanup_info_
ACE_Thread_Managertm_
 Pointer to an or NULL if there's no .

ACE_DEFAULT_THREAD_MANAGER_LOCK* sync_
 Registration lock to prevent premature removal of thread descriptor.

int terminated_
 Keep track of termination status.


Friends

class  ACE_At_Thread_Exit
class  ACE_Thread_Manager
class  ACE_Double_Linked_List< ACE_Thread_Descriptor >
class  ACE_Double_Linked_List_Iterator< ACE_Thread_Descriptor >

Detailed Description

Information for controlling threads that run under the control of the <Thread_Manager>.


Constructor & Destructor Documentation

ACE_Thread_Descriptor::ACE_Thread_Descriptor ( void )
 

ACE_Thread_Descriptor::~ACE_Thread_Descriptor ( void )
 

Do nothing destructor to keep some compilers happy.


Member Function Documentation

void ACE_Thread_Descriptor::acquire_release ( void )
 

Do nothing but to acquire the thread descriptor's lock and release. This will first check if the thread is registered or not. If it is already registered, there's no need to reacquire the lock again. This is used mainly to get newly spawned thread in synch with thread manager and prevent it from accessing its thread descriptor before it gets fully built. This function is only called from ACE_Log_Msg::thr_desc.

int ACE_Thread_Descriptor::at_exit ( void * object,
ACE_CLEANUP_FUNC cleanup_hook,
void * param )
 

Register an object (or array) for cleanup at thread termination. "cleanup_hook" points to a (global, or static member) function that is called for the object or array when it to be destroyed. It may perform any necessary cleanup specific for that object or its class. "param" is passed as the second parameter to the "cleanup_hook" function; the first parameter is the object (or array) to be destroyed. Returns 0 on success, non-zero on failure: -1 if virtual memory is exhausted or 1 if the object (or arrayt) had already been registered.

int ACE_Thread_Descriptor::at_exit ( ACE_At_Thread_Exit & cleanup )
 

Register an At_Thread_Exit hook and the ownership is retained for the caller. Normally used when the at_exit hook is created in stack.

int ACE_Thread_Descriptor::at_exit ( ACE_At_Thread_Exit * cleanup )
 

Register an At_Thread_Exit hook and the ownership is acquire by Thread_Descriptor, this is the usual case when the AT is dynamically allocated.

void ACE_Thread_Descriptor::at_pop ( int apply = 1 ) [private]
 

Pop an At_Thread_Exit from at thread termination list, apply the at if apply is true.

void ACE_Thread_Descriptor::at_push ( ACE_At_Thread_Exit * cleanup,
int is_owner = 0 ) [private]
 

Push an At_Thread_Exit to at thread termination list and set the ownership of at.

void ACE_Thread_Descriptor::do_at_exit ( void ) [private]
 

Run the AT_Thread_Exit hooks.

void ACE_Thread_Descriptor::dump ( void ) const
 

Dump the state of an object.

ACE_INLINE ACE_Thread_Descriptor * ACE_Thread_Descriptor::get_next ( void ) const
 

ACE_INLINE void ACE_Thread_Descriptor::log_msg_cleanup ( ACE_Log_Msg * log_msg )
 

This cleanup function must be called only for ACE_TSS_cleanup. The ACE_TSS_cleanup delegate Log_Msg instance destruction when Log_Msg cleanup is called before terminate.

ACE_INLINE void ACE_Thread_Descriptor::reset ( ACE_Thread_Manager * tm ) [private]
 

Reset this thread descriptor.

ACE_INLINE void ACE_Thread_Descriptor::self ( ACE_hthread_t & handle )
 

Unique handle to thread (used by Win32 and AIX).

ACE_INLINE ACE_thread_t ACE_Thread_Descriptor::self ( void ) const
 

Unique thread id.

ACE_INLINE void ACE_Thread_Descriptor::set_next ( ACE_Thread_Descriptor * td )
 

Set/get the <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.

void ACE_Thread_Descriptor::terminate ( void ) [private]
 

terminate realize the cleanup process to thread termination.


Friends And Related Function Documentation

class ACE_At_Thread_Exit [friend]
 

class ACE_Double_Linked_List [friend]
 

Reimplemented from ACE_Thread_Descriptor_Base.

class ACE_Double_Linked_List_Iterator [friend]
 

Reimplemented from ACE_Thread_Descriptor_Base.

class ACE_Thread_Manager [friend]
 

Reimplemented from ACE_Thread_Descriptor_Base.


Member Data Documentation

ACE_At_Thread_Exit * ACE_Thread_Descriptor::at_exit_list_ [private]
 

The AT_Thread_Exit list.

ACE_Cleanup_Info ACE_Thread_Descriptor::cleanup_info_ [private]
 

Stores the cleanup info for a thread. @ Note, this should be generalized to be a stack of s.

ACE_Log_Msg * ACE_Thread_Descriptor::log_msg_ [private]
 

Thread_Descriptor is the ownership of ACE_Log_Msg if log_msg_!=0 This can occur because ACE_TSS_cleanup was executed before terminate.

ACE_DEFAULT_THREAD_MANAGER_LOCK * ACE_Thread_Descriptor::sync_ [private]
 

Registration lock to prevent premature removal of thread descriptor.

int ACE_Thread_Descriptor::terminated_ [private]
 

Keep track of termination status.

ACE_Thread_Manager * ACE_Thread_Descriptor::tm_ [private]
 

Pointer to an or NULL if there's no .


The documentation for this class was generated from the following files:
Generated at Sat Dec 1 11:05:50 2001 for ACE by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000