windows核心编程写道<P204>:
1、我们应该根据高速缓冲行的大小来将应用程序的数据组织在一起,并将数据与缓冲行的边界对齐。
2、我们应该把只读数据(或不经常使用的数据)与可读写数据分别存放。
3、我们应该把差不多会在同一时间访问的数据组织在一起。
这样做的目的是为了确保不同的CPU能够各自访问不同的内存地址,而且这些地址不在同一高速缓冲行中。此外,我们应该把只读数据(或不经常使用的数据)与可读写数据分别存放。
windows中调用GetLogicalProcessorInformation函数,获取cache信息。 定义结构体的时候使用 _declspec(align(CACHE_ALIGN))强制将几个变量放入同一或不同的缓冲行。