假设我想(ab)使用缓存一致性来执行像FaRM这样的无锁读取,那么将一个具有单个64字节数组的结构作为数据就足以保证在具有64字节缓存行的体系结构上每个结构将完全占用一个缓存行?
不,这不能保证对齐是缓存行。
RFC 1358添加了#[repr(align)]的概念,允许程序员指定对齐要求。这个属性在Rust 1.25中稳定下来。
#[repr(align)]
对于您的具体情况,您可以使用它:
#[repr(align(64))] struct Foo { value: u8, }