1

正如标题所说,在使用线程和非阻塞同步时需要注意哪些编译器、CLR 或 CPU 优化?

我已经阅读了一些关于指令重新排序以提高效率的内容,这可能会破坏事情,以及缓存优化会导致变量立即对其他线程不可见[0],但是还有其他(我确定有)我需要注意什么?

任何指向推荐阅读/博客/文章/等的链接将不胜感激。

谢谢,埃吉尔。

更新:感谢 Jons 链接到 Joe Duffy 的博客文章,我发现了更多很棒的信息,我想我会与你们分享:

4

2 回答 2

1

基本上,您需要了解 .NET 内存模型。忽略当前执行的优化 - 模型代码。

我会推荐Joe Duffy 的这篇博文作为一个很好的起点。

我还建议您不要推出自己的无锁代码。IMO,这对凡人来说太难了。使用像 Parallel Extensions(在 .NET 4.0 中)这样的框架来为您做正确的事情。

于 2009-12-04T17:13:45.907 回答
1

Joe Duffy 有一本很棒的书,名为“ Windows 上的并发编程”,如果您对 Windows 上的并发(包括无锁编程)感兴趣,我绝对推荐您阅读这本书。

于 2009-12-04T17:14:08.573 回答