我有几个类存在高速缓存争用问题,它们是用“new”运算符分配的。我能否以某种方式确保"new"返回与缓存行对齐的地址?
我正在使用 GCC(如果不能移植的话)。
最佳答案
对于 glibc 或 windows CRT 系统,您可以分别使用 memalign
或 _aligned_alloc
。你甚至可以使用像 nedmalloc 这样的自定义分配器并让它对齐 block ,这也可以给你一些其他额外的好处。
您还应该用 __attribute__((aligned(64)))
标记它们,以防它们被静态分配。
关于c++ - C++ 中的错误共享,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9352307/