随着多核处理器变得越来越流行,我认为熟悉如何编写代码以利用它们对我来说是明智的。我是 .NET 开发人员,不知道从哪里开始(说真的,我不知道从哪里开始)。有什么建议么?
8 回答
多核编程本质上是多线程编程。只要您的应用程序是多线程的,操作系统就会确定在哪个内核上运行哪个线程。
那么,你真正的问题应该是,什么样的应用程序会从多线程中受益?想想这样一个应用程序,然后实例化多个线程来解决相同部分的问题。
最好的开始方法是获取并行扩展框架的最新 CTP 并开始研究他们的示例代码。
阅读 .NET 使用的异步编程模型。研究允许委托在线程池中执行的 BeginXXX 和 EnxXXX 范式。
Stream 类都有BeingXXX、EndXXX 方法(例如BeginRead、EndRead),它们允许您进行异步IO。如果您正在处理大量基于 IO 的事情,您将希望使用这些方法来增加并行度。
我不再经常推荐书籍,但 Joe Duffy 的Windows 并发编程简直是不可替代的。
在 .net 4.0 上查找信息。它将为其添加不同的构造。
就像 JaredPar 所说的并行扩展非常好。我和他们一起玩了一下,他们很容易使用并增加了性能。
我非常喜欢的构造是 Parallel.ForEach() 和 PLinq。
Parallel.ForEach 类似于 DotNet 2.0 集合中的 ForEach(delegate) 函数。它接受一个动作委托并并行运行它。
Plinq 允许您通过在查询末尾添加 .AsParallel() 以并行方式执行任何普通 Linq 查询。
查看 Jared 发布的链接以获取更多信息。
这可能是一个很好的起点。
只需将您的项目分成专门用于执行特定功能的多个线程,您就可以利用多个内核。操作系统处理将不同线程调度到最可用的处理器内核。