NokiMo
Хачатур
Хачатур

boosty


Уроки C# – Управляй Как Бог / static / volatile / lock

Уроки C# – Управляй Как Бог / static / volatile / lock

Singleton:
https://ru.wikipedia.org/wiki/Одиночка_(шаблон_проектирования)
Double checked locking:
https://ru.wikipedia.org/wiki/Блокировка_с_двойной_проверкой
lock:
https://docs.microsoft.com/ru-ru/dotnet/csharp/language-reference/keywords/lock-statement
volatile:
https://docs.microsoft.com/ru-ru/dotnet/csharp/language-reference/keywords/volatile
static volatile ClassName Class;
static object SyncObject = new object();
public static ClassName GetInstance
{
    get
    {
        if (Class == null)
        lock (SyncObject)
        {
            if (Class == null)
            Class = new ClassName();
        }
        return Class;
    }
}

Comments

<div ><div><span class="text">Ничегошеньки не понимаю, но честно ставлю лайки - говорят- это  помогает</span></div></div>

Neimar

<div ><div><span class="text">Вот это уже да, можно сократить =)</span></div></div>

Хачатур

<div ><div><span class="text">А что если поменять код в get таким образом?<br><br><br>get<br> {<br> lock (SyncObject)<br> {<br> return Class ?? (Class = new ClassName());<br> }<br> }<br>По идее же будет работать также как первоначальный код, то есть если переменная Class не null, то возвращает её, а если null, то создаёт новый экземпляр.</span></div></div>

Александр Белый


Related Creators