在需要高性能的编程中,需要注意多核 CPU 的缓存一致性 MESI 协议吗?

2017 年 9 月 28 日
 aheadlead
2923 次点击
所在节点    问与答
6 条回复
ipconfiger
2017 年 9 月 28 日
需要
aheadlead
2017 年 9 月 28 日
@ipconfiger 愿闻其详
希望能给出一些参考资料,或者类似游戏引擎的代码参考,谢谢
clearbug
2017 年 9 月 28 日
这个东西不是都会在编程语言层面处理的么?我看 java 好像是这样的!楼主说的编程是用什么语言?
gogohigh
2017 年 9 月 28 日
Java 有 JMM 处理
xxzs
2017 年 9 月 28 日
可以看看 folly, 比如 ProducerConsumer Queue 里面就对 cache line 做了特别处理,
char pad0_[CacheLocality::kFalseSharingRange];
const uint32_t size_;
T* const records_;

FOLLY_ALIGN_TO_AVOID_FALSE_SHARING std::atomic<unsigned int> readIndex_;
FOLLY_ALIGN_TO_AVOID_FALSE_SHARING std::atomic<unsigned int> writeIndex_;

char pad1_[CacheLocality::kFalseSharingRange - sizeof(writeIndex_)];
};
xxzs
2017 年 9 月 28 日
有兴趣还可以研究一下 C++的 std::memory_order

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/394275

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX