有没有一种属性可以强制在变量后面添加填充?
我声明了一个易失性(非缓存)变量,如下所示:
volatile int foo __attribute__((aligned(CACHE_LINE_SIZE));
我想要防止其他变量被分配到同一缓存行,以避免一致性问题。
我可以在foo后面添加填充变量,或者在同一编译单元中将__attribute__((aligned(CACHE_LINE_SIZE))
设置为下一个变量。但是我想知道是否有更简洁的方法来实现这一点,例如向变量foo
本身添加属性以强制填充。
struct { int foo; char padding[CACHE_LINE_SIZE - sizeof(int)]; }
的东西? - KamilCukstd::aligned_storage
是否符合你的需求? - Richard Crittenunion { int foo; char size[CACHE_LINE_SIZE]; }
看起来更好。 - KamilCukstd::aligned_storage
在C++23中已被弃用。 - Fulgen