http://109.livejournal.com/ ([identity profile] 109.livejournal.com) wrote in [personal profile] juan_gandhi 2007-04-12 08:13 am (UTC)

насколько я понял, выход из лока как раз гарантирует синхронизацию, независимо от количества процессоров и их кэшей. store.release semantics, whatever that means. то есть вторая проверка _никогда_ не увидит null, если инициализация уже произошла. проблема в том, что _первая_ проверка может увидеть не null из-за реордеринга операций внутри лока. использование слова volatile решает именно эту проблему, запрещая реордеринг операции присвоения волатильной переменной. интересно, что слово volatile в естественном языке означает нечто обратное по смыслу, а сюда бы как раз подошло ключевое слово типа "solid" или "enforce" на худой конец.

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