#include "singleton_thread.h"
Singleton* Singleton::_instance(0);
unsigned int Singleton::_used(0);
pthread_mutex_t Singleton::_mutex(PTHREAD_MUTEX_INITIALIZER);
Singleton* Singleton::getInstance()
{
pthread_mutex_lock(&_mutex);
++_used;
if(_instance == 0)
{
_instance = new Singleton();
}
pthread_mutex_unlock(&_mutex);
return _instance;
}
void Singleton::releaseInstance()
{
pthread_mutex_lock(&_mutex);
--_used;
if(_used == 0)
{
delete _instance;
_instance = 0;
}
pthread_mutex_unlock(&_mutex);
}