在使用线程和非阻塞同步时要注意哪些编译器,CLR或CPU优化?

时间:2009-12-04 17:03:28

标签: .net synchronization clr multithreading compiler-optimization

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

我已经阅读了一些关于提高效率的指令的重新排序,这可能会破坏事情,并且缓存优化会导致变量不会立即被其他线程看到[0],但还有其他(我确定)我需要知道吗?

非常感谢任何推荐阅读/博客/文章等的链接。

谢谢,Egil。

更新:感谢Jons链接到Joe Duffy的博客文章,我发现了更多我认为会与你们分享的好消息:

2 个答案:

答案 0 :(得分:1)

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

我建议Joe Duffy this blog post作为一个很好的起点。

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

答案 1 :(得分:1)

Joe Duffy有一本名为“Concurrent Programming on Windows”的优秀书籍,如果你对Windows上的并发感兴趣(包括无锁编程),我绝对推荐阅读。