hardware_destructive_interference_size
用于防止虚假分享。 cppreference 有一个示例,尝试将其他一些数据与 std::atomic: 保存在一起
// from https://en.cppreference.com/w/cpp/thread/hardware_destructive_interference_size
struct together
{
std::atomic<int> dog;
int puppy;
};
问题:在大多数情况下,我认为我们希望
together
具有 hardware_destructive_interference_size
的对齐方式,并且在通常情况下,我们希望 std::atomic
具有 hardware_destructive_interference_size
的对齐方式,以防止错误共享。什么时候不是这样?
full示例的目的(您只显示了其中的一部分)是您想要确保如果您访问原子,您已经加载了包含
puppy
的缓存行。这是相长性干扰,而不是破坏性干扰。