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