Товарищи разработчики!
Зацените! Новое моё изобретение!!!
Потоковобезопасный шаблон "Ленивого" синглтона.
template <class T>
T* Get(bool deleteInstance=false)
{
volatile static void* ptr = 0;
volatile static unsigned status = 0;
unsigned sturtup = 0, creating = 1, created = 2, deleted = 3;
if (!InterlockedCompareExchange(&status, creating, sturtup))
{
ptr = new T;
status = created;
}
while (status == creating)
Sleep(0);
if (deleteInstance && ptr && status==created)
{
delete (T*)ptr;
status = deleted;
}
return (T*)ptr;
}
Если будет что возразить — пишите!