Всем привет.
Вопрос по поводу реализации многопоточной защиты патерна singleton, везде описаны средтсва как защитить сам instance от опроса разными тредами, но как быть увереным, что сам объект синхронизации находится в валидном состоянии ?
Вот как пример
static InstanceTypeRef getInstance()
{
if( NULL == ms_instance )
{
static boost::mutex instanceMutex;
boost::lock_guard< boost::mutex > sentinel( instanceMutex );
if( NULL == ms_instance )
{
ms_instance = new InstanceType();
}
}
return * ms_instance;
}
Если какой то объект будет создан раньше того, как будет вызван этот Instance, и в своем, скажем деструкторе дернет этот Instance, то по идее instanceMutex будет уже не валидным
![](/Forum/Images/smirk.gif)
Как можно защитится от этого ?
спс.