Size: a a a

2020 December 24

E

EgorBo in pro.net
Ilya Chernoudov
вроде же рослин анализатор это как то детектит
там по ссылке написано - это невозможно определить же
источник

E

EgorBo in pro.net
тьюринг доказал
источник

E

EgorBo in pro.net
для общего случая*
источник

Dv

Dr. Friedrich von Ne... in pro.net
Pavel
Всем привет! Подскажите про кэши ядер,  актуальность локальных кэшей ядра гарантируется аппаратно? Или они могут быть не актуальны (отличаться от актуального значения в памяти)?
Там есть всякие хитрые протоколы когерентности кэшей. В общем случае гарантируется в пределах модели памяти соответствующего устройства.
источник

Dv

Dr. Friedrich von Ne... in pro.net
Pavel
volatile только запрещает оптимы компилятору чтоб реюзать результат чтения филда или генерит какуюто спец инструкцию чтоб кэши ядра сбрость / вынудить явно читать память ?
Читай вот тут:
- раз
- два
источник

Dv

Dr. Friedrich von Ne... in pro.net
Прям охуенные статьи про модель памяти.
источник

Dv

Dr. Friedrich von Ne... in pro.net
Pavel
А зачем если когерентность кэшей на x86 гарантирована аппаратно?
Затем, что атомарный инкремент ты на этой гарантии не сделаешь.
источник

P

Pavel in pro.net
Dr. Friedrich von Never
Затем, что атомарный инкремент ты на этой гарантии не сделаешь.
Дак вопрос был про volatile, не для инкремента
источник

Dv

Dr. Friedrich von Ne... in pro.net
Pavel
Дак вопрос был про volatile, не для инкремента
Я ответил на пост в треде, где вы обсуждаете Interlocked.MemoryBarrier.
источник

Dv

Dr. Friedrich von Ne... in pro.net
Конкретно барьер нужен, чтобы перестановок не было. Которые бывают не только аппаратные, если чо
источник

Dv

Dr. Friedrich von Ne... in pro.net
Но ты рили почитай статьи, там прям очень доступно и по делу изложено.
источник

P

Pavel in pro.net
Спс почитаю. Мне интересно было в коде типа
public bool Disposed => _disposed !=0
есть ли смысл в volatile для филда _disposed ?
источник

Dv

Dr. Friedrich von Ne... in pro.net
Pavel
Спс почитаю. Мне интересно было в коде типа
public bool Disposed => _disposed !=0
есть ли смысл в volatile для филда _disposed ?
Зависит от политики доступа к этому полю — кто его выставляет, кто его проверяет и зачем.
источник

Dv

Dr. Friedrich von Ne... in pro.net
Если у тебя возможен многопоточный диспоз, то, возможно, есть смысл. Но также возможно, что простым volatile ты проблему его корректности (если таковая есть) не решишь.
источник

Dv

Dr. Friedrich von Ne... in pro.net
Может статься, тебе в этом объекте просто не нужно давать гарантий, что он хорошо работает и диспозится в многопоточном режиме. А вместо этого пусть вызыватель обеспечивает эти гарантии 🤷‍♂️
источник

P

Pavel in pro.net
Если волатиле только приводит к тому что оптимизации чтения в жирном методе не происходят, то смысла нет. Если что и (как утверждают некоторые) принуждает явно читать из памяти (освежать кэши) то есть
источник

Dv

Dr. Friedrich von Ne... in pro.net
Pavel
Если волатиле только приводит к тому что оптимизации чтения в жирном методе не происходят, то смысла нет. Если что и (как утверждают некоторые) принуждает явно читать из памяти (освежать кэши) то есть
Серьёзно, чел, почитай сраные статьи
источник

GK

Grigorii Kuzmin in pro.net
Pavel
Если волатиле только приводит к тому что оптимизации чтения в жирном методе не происходят, то смысла нет. Если что и (как утверждают некоторые) принуждает явно читать из памяти (освежать кэши) то есть
погугли про слабую и сильную модель памяти и барьеры. Наверняка поймёшь, что даст и не даст тебе volatile после этого
источник

GK

Grigorii Kuzmin in pro.net
о, уже советовали, соре) не прочитал тред
источник

E

EgorBo in pro.net
пишешь как хочешь, потом делаешь пост билд инжекто мемори барьеров везде
источник