正如标题所说,在使用线程和非阻塞同步时需要注意哪些编译器、CLR 或 CPU 优化?
我已经阅读了一些关于指令重新排序以提高效率的内容,这可能会破坏事情,以及缓存优化会导致变量立即对其他线程不可见[0],但是还有其他(我确定有)我需要注意什么?
任何指向推荐阅读/博客/文章/等的链接将不胜感激。
谢谢,埃吉尔。
更新:感谢 Jons 链接到 Joe Duffy 的博客文章,我发现了更多很棒的信息,我想我会与你们分享:
- 许多人指出的主要文章是Vance Morrison的《了解低锁技术在多线程应用程序中的影响》 。
- What Every Dev Must Know About Multithreaded Apps,同样由 Vance Morrison 撰写,对于我们这些不每天涉足多线程应用程序的人来说,这是一个非常好的更新。
- Joe Duffy 的9 Reusable Parallel Data Structures and Algorithms也是一本不错的读物。
- Jeffrey Richter 在他的并发事务专栏 Performance-Conscious Thread Synchronization中的更多内容。他对 SpinWaitLock 的实现非常好。
- 总的来说,MSDN Magazine 上的 Concurrency Affairs 专栏非常值得推荐。