Страницы

Поиск по вопросам

вторник, 2 октября 2018 г.

Когерентность кэша и Java Memory Model

Может ли когерентность кэша повлиять на работу многопоточного Java-приложения? Или все проблемы решает виртуальная машина? В каких случаях один и тот же многопоточный код будет работать по-разному в зависимости от кэш-памяти?


Ответ

По идее для объектов, отмеченных volatile когерентность должна обеспечиваться независимо от аппаратной поддержки когерентности кэшей. У большинства современных (SMP) компьютеров обеспечение когерентности кэша встроено в конструкцию. Этого нет (насколько мне известно) у HPC (high performance computing) кластеров. Знаю, что в реализации JVM для них обещают Truly portable threads and synchronization model. Вообще же, проблемы с параллельными потоками всегда на совести программиста.

Комментариев нет:

Отправить комментарий