伪共享:当你的多线程代码慢了100倍却找不到原因
2011年,LMAX交易平台的工程师们遇到一个奇怪的问题:他们的高性能消息队列在生产环境中表现不佳,但代码逻辑完全正确,线程安全措施也到位。经过深入排查,问题竟出在两个相邻的变量上——它们恰好落在同一个缓存行中。 ...
2011年,LMAX交易平台的工程师们遇到一个奇怪的问题:他们的高性能消息队列在生产环境中表现不佳,但代码逻辑完全正确,线程安全措施也到位。经过深入排查,问题竟出在两个相邻的变量上——它们恰好落在同一个缓存行中。 ...
1983年,James Goodman在IEEE COMPCON会议上发表了一篇题为《Using Cache Memory to Reduce Processor-Memory Traffic》的论文。这篇论文首次提出了"监听"(Snooping)的概念——让多个处理器通过监听共享总线上的事务来维护缓存一致性。当时的计算机界正处于从单处理器向多处理器过渡的关键时期,Goodman的发现为后来的对称多处理(SMP)系统奠定了基础。 ...
2017年,一位资深C++开发者在Stack Overflow上发帖求助:他的无锁队列在x86服务器上运行完美,但移植到ARM服务器后,偶尔会丢失数据。代码经过了多轮Code Review,逻辑无懈可击。最终,一位编译器开发者指出问题所在:缺少一条内存屏障。 ...