Вход на сайт
C# - ResourceManager - кешируем или как?
1183 просмотров
Перейти к просмотру всей ветки
MrSanders коренной житель
в ответ alex445 10.12.23 17:33, Последний раз изменено 10.12.23 18:21 (MrSanders)
Полагаю что такая же беда, как и в яве - out of order execution. Но добавление лишней переменной от этого (в яве) не спасает.
Если по-простому: создание/инициализация объекта это много инструкций. Вместо "выделили память, инициализировали поля, выполнили конструктор, присвоили адрес переменной" VM может выполнить "выделить память, присвоили адрес переменной, инициализировать поля, ...".
А в это время второй поток подходит к if-у, видит что наш синглтон уже не null и радостно возвращает его значение. А там у нас недоинициализированный объект.