为了防止错误共享,我想将数组的每个元素与缓存线对齐.首先我需要知道缓存线的大小,所以我给每个元素分配字节数.其次,我希望数组的开头与缓存线对齐.
我使用的是Linux和8核x86平台.首先,我如何找到高速缓存线大小.其次,如何在C中对齐到缓存行.我使用的是GCC编译器.
例如,假设缓存线大小为64,则 struct 如下.
element[0] occupies bytes 0-63
element[1] occupies bytes 64-127
element[2] occupies bytes 128-191
当然,假设0-63与高速缓存线对齐,依此类推.