将结构对齐到Rust中的缓存行

问题描述 投票:4回答:1

假设我想(ab)使用缓存一致性来执行像FaRM这样的无锁读取,那么将一个具有单个64字节数组的结构作为数据就足以保证在具有64字节缓存行的体系结构上每个结构将完全占用一个缓存行?

rust
1个回答
7
投票

不,这不能保证对齐是缓存行。

RFC 1358添加了#[repr(align)]的概念,允许程序员指定对齐要求。这个属性在Rust 1.25中稳定下来。

对于您的具体情况,您可以使用它:

#[repr(align(64))]
struct Foo {
    value: u8,
}
© www.soinside.com 2019 - 2024. All rights reserved.