Ложный обмен и атомарные переменные
Когда разные переменные находятся внутри одной строки кэша, вы можете испытатьЛожный обменЭто означает, что даже если два разных потока (работающих на разных ядрах) обращаются к двум разным переменным, если эти две переменные находятся в одной и той же строке кэша, у вас будет снижение производительности, так как каждый раз будет запускаться когерентность кэша.
Теперь скажем, что эти переменные являются атомарными переменными (под атомарными я имею в виду переменные, которые вводят ограничение памяти, такие какatomic<t>
C ++), будет ли там иметь значение ложное совместное использование, или не имеет значения, находятся ли атомарные переменные в одной и той же строке кэша или нет, так как предположительно они все равно будут вводить когерентность кэша. Другими словами, сделает ли размещение атомарных переменных в одной строке кэша медленнее, чем размещение их в одной строке кэша?