#ifndef SINGLETON_H |
#define SINGLETON_H |
#include "synobj.h" |
class Singleton { |
public : |
static Singleton& Instance() { // Unique point of access |
Lock lock(_mutex); |
if (0 == _instance) { |
_instance = new Singleton(); |
atexit (Destroy); // Register Destroy function |
} |
return *_instance; |
} |
void DoSomething(){} |
private : |
static void Destroy() { // Destroy the only instance |
if ( _instance != 0 ) { |
delete _instance; |
_instance = 0; |
} |
} |
Singleton(){} // Prevent clients from creating a new Singleton |
~Singleton(){} // Prevent clients from deleting a Singleton |
Singleton( const Singleton&); // Prevent clients from copying a Singleton |
Singleton& operator=( const Singleton&); |
private : |
static Mutex _mutex; |
static Singleton *_instance; // The one and only instance |
}; |
#endif/*SINGLETON_H*/ |