Ложное совместное использование и атомарные переменные

Когда разные переменные находятся внутри одной и той же строки кэша, может возникнуть False Sharing, что означает, что даже если два разных потока (работающих на разные ядра) обращаются к двум разным переменным, если эти две переменные находятся в одной и той же строке кеша, у вас будет снижение производительности, так как каждый раз будет запускаться когерентность кеша.

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

8
задан lurscher 13 April 2012 в 15:49
поделиться