Всем привет! Подскажите про кэши ядер, актуальность локальных кэшей ядра гарантируется аппаратно? Или они могут быть не актуальны (отличаться от актуального значения в памяти)?
Там есть всякие хитрые протоколы когерентности кэшей. В общем случае гарантируется в пределах модели памяти соответствующего устройства.
volatile только запрещает оптимы компилятору чтоб реюзать результат чтения филда или генерит какуюто спец инструкцию чтоб кэши ядра сбрость / вынудить явно читать память ?
Если у тебя возможен многопоточный диспоз, то, возможно, есть смысл. Но также возможно, что простым volatile ты проблему его корректности (если таковая есть) не решишь.
Может статься, тебе в этом объекте просто не нужно давать гарантий, что он хорошо работает и диспозится в многопоточном режиме. А вместо этого пусть вызыватель обеспечивает эти гарантии 🤷♂️
Если волатиле только приводит к тому что оптимизации чтения в жирном методе не происходят, то смысла нет. Если что и (как утверждают некоторые) принуждает явно читать из памяти (освежать кэши) то есть
Если волатиле только приводит к тому что оптимизации чтения в жирном методе не происходят, то смысла нет. Если что и (как утверждают некоторые) принуждает явно читать из памяти (освежать кэши) то есть
Если волатиле только приводит к тому что оптимизации чтения в жирном методе не происходят, то смысла нет. Если что и (как утверждают некоторые) принуждает явно читать из памяти (освежать кэши) то есть
погугли про слабую и сильную модель памяти и барьеры. Наверняка поймёшь, что даст и не даст тебе volatile после этого