ACE  6.4.2
Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | Static Protected Member Functions | Static Protected Attributes | List of all members
ACE_TSS_Singleton< TYPE, ACE_LOCK > Class Template Reference

This class uses the Adapter pattern to turn ordinary classes into Thread-specific Singletons optimized with the Double-Checked Locking optimization pattern. More...

#include <Singleton.h>

Inheritance diagram for ACE_TSS_Singleton< TYPE, ACE_LOCK >:
Inheritance graph
[legend]
Collaboration diagram for ACE_TSS_Singleton< TYPE, ACE_LOCK >:
Collaboration graph
[legend]

Public Member Functions

virtual void cleanup (void *param=0)
 
- Public Member Functions inherited from ACE_Cleanup
 ACE_Cleanup (void)
 No-op constructor. More...
 
virtual ~ACE_Cleanup (void)
 Destructor. More...
 

Static Public Member Functions

static TYPE * instance (void)
 Global access point to the singleton. More...
 
static void dump (void)
 Dump the state of the object. More...
 

Public Attributes

 ACE_ALLOC_HOOK_DECLARE
 Declare the dynamic allocation hooks. More...
 

Protected Member Functions

 ACE_TSS_Singleton (void)
 Default constructor. More...
 
 ACE_TSS_TYPE (TYPE) instance_
 Contained instance. More...
 
void operator= (const ACE_TSS_Singleton< TYPE, ACE_LOCK > &)
 
 ACE_TSS_Singleton (const ACE_TSS_Singleton< TYPE, ACE_LOCK > &)
 

Static Protected Member Functions

static ACE_TSS_Singleton< TYPE, ACE_LOCK > *& instance_i (void)
 Get pointer to the TSS Singleton instance. More...
 

Static Protected Attributes

static ACE_TSS_Singleton< TYPE, ACE_LOCK > * singleton_ = 0
 Pointer to the Singleton (ACE_Cleanup) instance. More...
 

Detailed Description

template<class TYPE, class ACE_LOCK>
class ACE_TSS_Singleton< TYPE, ACE_LOCK >

This class uses the Adapter pattern to turn ordinary classes into Thread-specific Singletons optimized with the Double-Checked Locking optimization pattern.

This implementation is another variation on the GoF Singleton pattern. In this case, a single <ACE_TSS_Singleton<TYPE, LOCK> > instance is allocated here, not a <TYPE> instance. Each call to the <instance> static method returns a Singleton whose pointer resides in thread-specific storage. As with ACE_Singleton, we use the ACE_Object_Manager so that the Singleton can be cleaned up when the process exits. For this scheme to work, a (static) cleanup() function must be provided. ACE_Singleton provides one so that TYPE doesn't need to.

Constructor & Destructor Documentation

template<class TYPE , class ACE_LOCK >
ACE_TSS_Singleton< TYPE, ACE_LOCK >::ACE_TSS_Singleton ( void  )
inlineprotected

Default constructor.

template<class TYPE , class ACE_LOCK >
ACE_TSS_Singleton< TYPE, ACE_LOCK >::ACE_TSS_Singleton ( const ACE_TSS_Singleton< TYPE, ACE_LOCK > &  )
protected

Member Function Documentation

template<class TYPE , class ACE_LOCK >
ACE_TSS_Singleton< TYPE, ACE_LOCK >::ACE_TSS_TYPE ( TYPE  )
protected

Contained instance.

template<class TYPE , class ACE_LOCK >
void ACE_TSS_Singleton< TYPE, ACE_LOCK >::cleanup ( void *  param = 0)
virtual

Cleanup method, used by <ace_cleanup_destroyer> to destroy the singleton.

Reimplemented from ACE_Cleanup.

template<class TYPE , class ACE_LOCK >
void ACE_TSS_Singleton< TYPE, ACE_LOCK >::dump ( void  )
static

Dump the state of the object.

template<class TYPE , class ACE_LOCK >
TYPE * ACE_TSS_Singleton< TYPE, ACE_LOCK >::instance ( void  )
static

Global access point to the singleton.

template<class TYPE , class ACE_LOCK >
ACE_TSS_Singleton< TYPE, ACE_LOCK > *& ACE_TSS_Singleton< TYPE, ACE_LOCK >::instance_i ( void  )
staticprotected

Get pointer to the TSS Singleton instance.

template<class TYPE , class ACE_LOCK >
void ACE_TSS_Singleton< TYPE, ACE_LOCK >::operator= ( const ACE_TSS_Singleton< TYPE, ACE_LOCK > &  )
protected

Member Data Documentation

template<class TYPE , class ACE_LOCK >
ACE_TSS_Singleton< TYPE, ACE_LOCK >::ACE_ALLOC_HOOK_DECLARE

Declare the dynamic allocation hooks.

template<class TYPE , class ACE_LOCK >
ACE_TSS_Singleton< TYPE, ACE_LOCK > * ACE_TSS_Singleton< TYPE, ACE_LOCK >::singleton_ = 0
staticprotected

Pointer to the Singleton (ACE_Cleanup) instance.


The documentation for this class was generated from the following files: