@kolomRus

Распределение Кэш памяти между потоками?

Перерыв несколько статей, я понял что у каждого ядра есть свой КЭШ и я никак не могу понять, как распределяется кэш память между потоками и видят ли потоки изменения переменных в кэше, если они выполняются в одном ядре?
Допустим , есть 2 потока который исполняются поочередно на одном ядре, каким образом они делят кэш этого ядра?
Что будет, если переменная не синхронизирована или не помечена как volatile , а эти два потока , которые выполняются на одном ядре - инкрементируют эту переменную?
  • Вопрос задан
  • 62 просмотра
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Многопоточность
Седой и строгий
Перерыв несколько статей, я понял что у каждого ядра есть свой КЭШ

Несколько кэшей. Причём некоторые из кэшей могут делиться между несколькими ядрами.

Что будет, если переменная не синхронизирована или не помечена как volatile

Непредсказуемое поведение будет, зависящее от конкретного железа и кучи других факторов.

Поэтому, исходя из двух предыдущих пунктов, лучше не лезть на железный уровень, если не пишешь драйвер, а оперировать соответствующими высокоуровневыми моделями языка программирования и среды выполнения. Тем более, что volatile решает не только проблемы видимости.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы