Tars的单件,加锁, 双check机制, 保证正确和效率,有点意思
static T *getInstance()
{
//加锁, 双check机制, 保证正确和效率
if(!_pInstance)
{
TC_ThreadLock::Lock lock(_tl);
if(!_pInstance)
{
if(_destroyed)
{
LifetimePolicy<T>::deadReference();
_destroyed = false;
}
_pInstance = CreatePolicy<T>::create();
LifetimePolicy<T>::scheduleDestruction((T*)_pInstance, &destroySingleton);
}
}
return (T*)_pInstance;
}
