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

# ACE_TSS_Singleton 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:

[legend]
Collaboration diagram for ACE_TSS_Singleton:

[legend]
List of all members.

## Public Methods
virtual void | cleanup (void *param=0)
| Cleanup method, used by <ace_cleanup_destroyer> to destroy the singleton. More...
## Static Public Methods
TYPE * | instance (void)
| Global access point to the singleton. More...
void | dump (void)
| Dump the state of the object. More...
## Protected Methods
| 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 Methods
ACE_TSS_Singleton< TYPE, ACE_LOCK > *& | instance_i (void)
| Get pointer to the TSS Singleton instance. More...
## Static Protected Attributes
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_INLINE ACE_TSS_Singleton< TYPE, ACE_LOCK >::ACE_TSS_Singleton | ( | void |  | ) | `[protected]`

| 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. Reimplemented in ACE_Unmanaged_TSS_Singleton.

template<class TYPE, class ACE_LOCK>
TYPE * ACE_TSS_Singleton< TYPE, ACE_LOCK >::instance | ( | void |  | ) | `[static]`

| Global access point to the singleton. Reimplemented in ACE_Unmanaged_TSS_Singleton.

template<class TYPE, class ACE_LOCK>
ACE_TSS_Singleton< TYPE, ACE_LOCK > *& ACE_TSS_Singleton< TYPE, ACE_LOCK >::instance_i | ( | void |  | ) | `[static, protected]`

| Get pointer to the TSS Singleton instance. Reimplemented in ACE_Unmanaged_TSS_Singleton.

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_TSS_Singleton< TYPE, ACE_LOCK >::singleton_ = 0`[static, protected]`

| Pointer to the Singleton (ACE_Cleanup) instance. Reimplemented in ACE_Unmanaged_TSS_Singleton.

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

- Singleton.h
- Singleton.cpp
- Singleton.i