Цитата:
Сообщение от Vinolentus
Я у себя вижу другую картинку (вин, VC2010). Когда в первом потоке вошли, но еще не вышли из CreateStatement, во втором static-переменной _уже_ не присваивается значение.
|
Отсюда попрошу поподробнее. Т.е. второй поток считает, что объект уже создан, хотя это не так?
Идея в том, чтобы код получал уже созданный объект, т.к. если он попробует обратиться к только конструируемому объекту - у нас будут большие неприятности. Нас устроит либо повторный вызов кода инициализации, либо уже готовый объект. Хотите сказать, что VC2010 нам не гарантирует?
UPDATE: провел собственное расследование: незнаю, какой жопой думали в Майкрософте разработчики компилятора, но таки компилятор отлавливает только первое обращение, а не момент инициализации. Если вы запустите программу
http://paste2.org/p/1298414, то получите результат:
Код:
Obtained value = 0
I'm the object constructor
Obtained value = 1
Т.е. в первом потоке мы только инициализируем переменную, а второй уже считает, что объект сконструирован О.о
Так что чую буду переписывать всю эту писанину
P.S. Моя в полнейшем ах...е