C++17 `std::hardware_destructive_interference_size` 和 `std::hardware_constructive_interference_size`
发布时间
阅读量:
阅读量
- std::hardware_destructive_interference_size
- std::hardware_constructive_interference_size
是 C++17 标准新增的两个常量。它们的主要作用在于协助开发人员应对缓存行尺寸以及内存对齐相关的问题¹²。
这两个数值与 L1 缓存行尺寸存在关联,但其数值并不完全等同于实际的 L1 缓存行尺寸。下面将对其进行详细说明:
1.
**std::hardware_destructive_interference_size**(破坏性干扰尺寸):
- 该常量主要用于防止伪共享现象的发生。所谓伪共享,指的是多个线程在不同时间点访问同一缓存行时产生的相互影响。
- 比如,当两个对象分别被不同线程访问,并且它们的访问模式不同时,可以通过设置std::hardware_destructive_interference_size来作为它们之间的偏移量,从而避免伪共享问题。
- 此值仅作为性能优化的一种参考建议,并非一定与具体的 L1 缓存行尺寸一致。
- 在程序编译过程中,可以根据目标平台已知的缓存行大小(例如64字节)设定一个固定常量,或者直接采用 `std::h
全部评论 (0)
还没有任何评论哟~
