Показать сообщение отдельно
Старый 12.03.2011, 18:38   #14
Ambal
MaNGOS Dev
 
Аватар для Ambal
 
Регистрация: 22.06.2010
Сообщений: 78
Сказал(а) спасибо: 24
Поблагодарили 71 раз(а) в 25 сообщениях
Ambal Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от Vinolentus Посмотреть сообщение
Я у себя вижу другую картинку (вин, VC2010). Когда в первом потоке вошли, но еще не вышли из CreateStatement, во втором static-переменной _уже_ не присваивается значение.
Отсюда попрошу поподробнее. Т.е. второй поток считает, что объект уже создан, хотя это не так? Идея в том, чтобы код получал уже созданный объект, т.к. если он попробует обратиться к только конструируемому объекту - у нас будут большие неприятности. Нас устроит либо повторный вызов кода инициализации, либо уже готовый объект. Хотите сказать, что VC2010 нам не гарантирует?

UPDATE: провел собственное расследование: незнаю, какой жопой думали в Майкрософте разработчики компилятора, но таки компилятор отлавливает только первое обращение, а не момент инициализации. Если вы запустите программу http://paste2.org/p/1298414, то получите результат:
Код:
Obtained value = 0
I'm the object constructor
Obtained value = 1
Т.е. в первом потоке мы только инициализируем переменную, а второй уже считает, что объект сконструирован О.о

Так что чую буду переписывать всю эту писанину

P.S. Моя в полнейшем ах...е

Последний раз редактировалось Ambal; 12.03.2011 в 19:15.
Ambal вне форума