C++中的虚假共享

jk4*_*736 9 c++ multithreading

我有几个类遭受缓存争用,并使用"new"运算符进行分配.我可以以某种方式确保"new"返回一个与缓存行对齐的地址吗?

我正在使用GCC(如果它不可能).

sho*_*app 1

您可以使用placement new将对象构造到给定的内存区域:

  // Instantiate object into a pre-allocated buffer
  obj = new (buf) TheClass();
Run Code Online (Sandbox Code Playgroud)

要获得对齐的缓冲区buf,您可以使用memalign,sbrkmmap