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

ACE_TSS Class Template Reference

Allows objects that are "physically" in thread specific storage (i.e., private to a thread) to be accessed as though they were "logically" global to a program. More...

#include <Synch_T.h>

List of all members.

Public Methods

 ACE_TSS (TYPE *ts_obj = 0)
virtual ~ACE_TSS (void)
 Deregister with thread-key administration.

TYPE* ts_object (void) const
TYPE* ts_object (TYPE *)
 Set the thread-specific object for the key associated with this object.

TYPE* operator-> () const
 Use a "smart pointer" to get the thread-specific object associated with the <key_>.

 operator TYPE * (void) const
 Return or create and return the calling threads TYPE object.

virtual TYPE* make_TSS_TYPE (void) const
 Hook for construction parameters.

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


Protected Methods

TYPE* ts_get (void) const
 Actually implements the code that retrieves the object from thread-specific storage.

int ts_init (void) const
 Factors out common code for initializing TSS. This must NOT be called with the lock held...

void operator= (const ACE_TSS<TYPE> &)
 ACE_TSS (const ACE_TSS<TYPE> &)

Protected Attributes

TYPE* type_
 This implementation only works for non-threading systems...


Detailed Description

template<class TYPE> template class ACE_TSS

Allows objects that are "physically" in thread specific storage (i.e., private to a thread) to be accessed as though they were "logically" global to a program.

This class is a wrapper around the OS thread library thread-specific functions. It uses the <C++ operator->> to shield applications from the details of accessing thread-specific storage.

NOTE: For maximal portability, <TYPE> cannot be a built-in type, but instead should be a user-defined class (some compilers will allow a built-in type, others won't). See template class ACE_TSS_Type_Adapter, below, for adapting built-in types to work with ACE_TSS.


Constructor & Destructor Documentation

template<classTYPE>
ACE_INLINE ACE_TSS< TYPE >::ACE_TSS<TYPE> ( TYPE * type = 0 )
 

If caller has passed us a non-NULL ts_obj *, then we'll just use this to initialize the thread-specific value (but only for the calling thread). Thus, subsequent calls to <operator->> in this thread will return this value. This is useful since it enables us to assign objects to thread-specific data that have arbitrarily complex constructors.

template<classTYPE>
ACE_TSS<TYPE>::~ACE_TSS<TYPE> ( void ) [virtual]
 

Deregister with thread-key administration.

template<classTYPE>
ACE_TSS<TYPE>::ACE_TSS<TYPE> ( const ACE_TSS< TYPE >& ) [protected]
 


Member Function Documentation

template<classTYPE>
void ACE_TSS<TYPE>::dump ( void ) const
 

Dump the state of an object.

template<classTYPE>
TYPE * ACE_TSS<TYPE>::make_TSS_TYPE ( void ) const [virtual]
 

Hook for construction parameters.

template<classTYPE>
ACE_TSS<TYPE>::operator TYPE * ( void ) const
 

Return or create and return the calling threads TYPE object.

template<classTYPE>
TYPE * ACE_TSS<TYPE>::operator-> ( void ) const
 

Use a "smart pointer" to get the thread-specific object associated with the <key_>.

template<classTYPE>
void ACE_TSS<TYPE>::operator= ( const ACE_TSS< TYPE >& ) [protected]
 

template<classTYPE>
ACE_INLINE TYPE * ACE_TSS< TYPE >::ts_get ( void ) const [protected]
 

Actually implements the code that retrieves the object from thread-specific storage.

template<classTYPE>
ACE_INLINE int ACE_TSS< TYPE >::ts_init ( void ) const [protected]
 

Factors out common code for initializing TSS. This must NOT be called with the lock held...

template<classTYPE>
ACE_INLINE TYPE * ACE_TSS< TYPE >::ts_object ( TYPE * type )
 

Set the thread-specific object for the key associated with this object.

template<classTYPE>
ACE_INLINE TYPE * ACE_TSS< TYPE >::ts_object ( void ) const
 

Get the thread-specific object for the key associated with this object. Returns 0 if the data has never been initialized, otherwise returns a pointer to the data.


Member Data Documentation

template<classTYPE>
TYPE * ACE_TSS<TYPE>::type_ [protected]
 

This implementation only works for non-threading systems...


The documentation for this class was generated from the following files:
Generated at Fri Oct 5 07:05:24 2001 for ACE by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000