Сроки когерентности кешей памяти после барьера памяти и после взаимосвязанных операций

Есть ли разница во времени согласованности (или «сброса») кэшей памяти после операций с блокировкой и после вызова барьеров памяти? Давайте рассмотрим на C # - используя любые операции Interlocked vs Thread.MemoryBarrier () - идентично ли результирующее поведение обновления кешей памяти или нет?

Я считаю, что есть разница. Я решал один бизнес-кейс, который, казалось, был вызван отложенным сбросом после барьера памяти (мы заменили его операцией Interlocked). Также существует довольно много источников информации (включая wikipedia), предполагающих, что барьеры памяти не гарантируют сроки проведения операций.

Я могу связать больше ссылок или добавить фрагмент кода примера, если интересно, но сначала я хочу, чтобы вопрос был коротким (так как я был отклонен за слишком много информации в моем исходный вопрос к этой теме)


person Jan    schedule 17.07.2014    source источник


Ответы (1)


Как также ответили в исходном вопросе: Операции CAS (Interlocked) были (и, скорее всего, будут) самыми быстрыми очистителями кешей.

person Jan    schedule 18.11.2014