С++ 17 добавил std::hardware_destructive_interference_size
и std::hardware_constructive_interference_size
. Во-первых, я думал, что это просто переносимый способ получить размер строки кэша L1, но это упрощение.
Вопросы:
- Как эти константы связаны с размером строки кеша L1?
- Есть ли хороший пример, демонстрирующий их варианты использования?
- Оба определены
static constexpr
. Разве это не проблема, если вы создаете двоичный файл и выполняете его на других машинах с разными размерами строк в кеше? Как он может защитить от ложного обмена в этом сценарии, когда вы не уверены, на каком компьютере будет работать ваш код?