伪共享:当你的多线程代码慢了100倍却找不到原因
2011年,LMAX交易平台的工程师们遇到一个奇怪的问题:他们的高性能消息队列在生产环境中表现不佳,但代码逻辑完全正确,线程安全措施也到位。经过深入排查,问题竟出在两个相邻的变量上——它们恰好落在同一个缓存行中。 ...
2011年,LMAX交易平台的工程师们遇到一个奇怪的问题:他们的高性能消息队列在生产环境中表现不佳,但代码逻辑完全正确,线程安全措施也到位。经过深入排查,问题竟出在两个相邻的变量上——它们恰好落在同一个缓存行中。 ...
在一台双路服务器上,某个开发者写了一个简单的多线程程序来处理内存数据。原本以为增加线程数能线性提升性能,结果却发现:当线程数从1增加到16时,吞吐量不升反降,甚至比单线程还慢了40%。 ...