Новый тип синглтона! Зацените!
От: Аноним  
Дата: 15.01.09 12:11
Оценка: -1 :)
Товарищи разработчики!

Зацените! Новое моё изобретение!!!

Потоковобезопасный шаблон "Ленивого" синглтона.

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;
}


Если будет что возразить — пишите!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.