Сообщество / Новая тема

Обсуждение статьиПервый комментарий откроет обсуждение — дальше все вопросы по этой статье будут собираться здесь

Об статье:
Что такое строка кеша и почему два потока дерутся за переменные, которых не делят

Вы разносите данные по отдельным переменным специально, чтобы потоки не мешали друг другу: у каждого свой счётчик, свой указатель, своя структура. Блокировок нет, гонок по данным нет, логика проверена — а многопоточный код всё равно не масштабируется, и чем больше ядер вы добавляете, тем меньше прирост. Причина обычно не в коде и не в алгоритме, а в том, как процессор физически читает память: не байтами и не переменными, а целыми блоками фиксированного размера. Если две логически несвязанные переменные случайно оказались в одном таком блоке, ядра…

Подробнее →