http://itman.livejournal.com/ ([identity profile] itman.livejournal.com) wrote in [personal profile] juan_gandhi 2007-04-12 07:34 pm (UTC)

Эээ.... на самом деле Вы, ИМХО, немного запутываете общественность. Или я сам запутался :-) Вот здесь это правильнее описано. (http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html)

Проблема заключается в том, что ссылка на непроиницилизированный объект может появиться раньше, чем объект сконструируется, а не в том, что второй тред увидит эту ссылку до момента выхода из синхронизированного блока. И существует вероятность, что он будет работать с неинициализорованным объектом. А memory barrier между инициализацией и присвоением shared variable гарантирует, что подобной гадости не произойдет. Видимо, аналогичным образом работает и присвоение volatile переменной, которая выставляет барьер перед присваиванием.

Post a comment in response:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting