正如标题所说,在使用线程和非阻塞同步时要注意哪些编译器,CLR或CPU优化?
我已经阅读了一些关于提高效率的指令的重新排序,这可能会破坏事情,并且缓存优化会导致变量不会立即被其他线程看到[0],但还有其他(我确定)我需要知道吗?
非常感谢任何推荐阅读/博客/文章等的链接。
谢谢,Egil。
更新:感谢Jons链接到Joe Duffy的博客文章,我发现了更多我认为会与你们分享的好消息:
答案 0 :(得分:1)
基本上,您需要了解.NET内存模型。忽略当前执行的优化 - 模型的代码。
我建议Joe Duffy this blog post作为一个很好的起点。
我还建议您不滚动自己的无锁代码。 IMO对凡人来说太难了。使用像Parallel Extensions(在.NET 4.0中)这样的框架,它可以为您做正确的事。
答案 1 :(得分:1)
Joe Duffy有一本名为“Concurrent Programming on Windows”的优秀书籍,如果你对Windows上的并发感兴趣(包括无锁编程),我绝对推荐阅读。