我该如何让我的C#应用程序充分利用多处理器核心?

6

我一直在对.NET C#应用程序使用资源,如CPU或内存的方式进行测试。我编写了一些循环来计算大量数字的值,并且我对算法的负载感到满意。

我有一个四核2.4 GHz处理器,但是我注意到在任务管理器中,我的应用程序仅使用了25%的CPU。为什么它不使用100%?这是否意味着在VS 2008编译的.NET C#应用程序只支持单核CPU?还是有一种方法可以强制其使用所有CPU?


1
你的代码运行需要多长时间呢?你确定你需要额外的速度吗?它可能会使你的程序变得更加复杂。 - Justin
你必须在设计应用程序时考虑到多核使用;规划应用程序中的CPU密集型任务,并尝试将它们转换为异步操作。 - RobS
4个回答

5

一切取决于你如何修改代码以使用多个核心。

除非进行并行或多线程操作,否则程序将不会使用多个核心。

.NET 4 有一个库可以帮助你:Parallel LINQ。更多信息请参见此页面:http://msdn.microsoft.com/en-us/library/dd997425.aspx


2

如果您不特别启动一些线程,它将在1个核心上运行。

最简单的方法是将一个方法推送到线程池中。

   System.Threading.ThreadPool.QueueUserWorkItem(DoSomething);

   void DoSomething() { ... }

2
使用旨在获益于多核处理器的 .NET 4.0 TaskLibrary

1

如果我使用后台工作线程,假设我的CPU是四核心的,有人可以举个例子来说明它会如何反应吗?


2
是的,后台工作线程将在单独的线程中运行,并允许使用超过1个CPU核心。您需要总共4个线程来使用4个核心。难点在于找出如何最好地将您的任务分解为单独的作业。 - Justin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接