7

随着多核处理器变得越来越流行,我认为熟悉如何编写代码以利用它们对我来说是明智的。我是 .NET 开发人员,不知道从哪里开始(说真的,我不知道从哪里开始)。有什么建议么?

4

8 回答 8

13

多核编程本质上是多线程编程。只要您的应用程序是多线程的,操作系统就会确定在哪个内核上运行哪个线程。

那么,你真正的问题应该是,什么样的应用程序会从多线程中受益?想想这样一个应用程序,然后实例化多个线程来解决相同部分的问题。

于 2009-03-03T19:42:25.020 回答
3

最好的开始方法是获取并行扩展框架的最新 CTP 并开始研究他们的示例代码。

于 2009-03-03T19:34:00.830 回答
2

阅读 .NET 使用的异步编程模型。研究允许委托在线程池中执行的 BeginXXX 和 EnxXXX 范式。

Stream 类都有BeingXXX、EndXXX 方法(例如BeginRead、EndRead),它们允许您进行异步IO。如果您正在处理大量基于 IO 的事情,您将希望使用这些方法来增加并行度。

于 2009-03-03T19:34:53.683 回答
2

我不再经常推荐书籍,但 Joe Duffy 的Windows 并发编程简直是不可替代的。

于 2009-03-03T19:34:57.800 回答
1

在 .net 4.0 上查找信息。它将为其添加不同的构造。

于 2009-03-03T19:34:19.097 回答
1

就像 JaredPar 所说的并行扩展非常好。我和他们一起玩了一下,他们很容易使用并增加了性能。

我非常喜欢的构造是 Parallel.ForEach() 和 PLinq。

Parallel.ForEach 类似于 DotNet 2.0 集合中的 ForEach(delegate) 函数。它接受一个动作委托并并行运行它。

Plinq 允许您通过在查询末尾添加 .AsParallel() 以并行方式执行任何普通 Linq 查询。

查看 Jared 发布的链接以获取更多信息。

于 2009-03-03T20:06:04.573 回答
0

这可能是一个很好的起点

于 2009-03-03T19:33:23.140 回答
0

只需将您的项目分成专门用于执行特定功能的多个线程,您就可以利用多个内核。操作系统处理将不同线程调度到最可用的处理器内核。

于 2009-03-03T19:41:44.600 回答