// try3.h
#include "sync.h"
class Singleton
{
public:
static Singleton& instance();
void show_state();
protected:
Singleton();
private:
static Singleton* _instance;
static Critical_Section _key;
int state;
};
Singleton* Singleton::_instance = NULL;
Critical_Section Singleton::_key;
Singleton& Singleton::instance()
{
Lock_Guard<Critical_Section> gate(_key);
if(!_instance)
_instance = new Singleton;
return *_instance;
}