我一直在做一些关于.NET C#应用程序使用资源(如CPU或内存)的测试。我写了一些计算大量数值的循环,我对算法的权重感到满意。如何让我的C#应用程序利用多个处理器内核?
我有一个四核2.4 GHz处理器,但我注意到,在任务管理器中,我的应用程序只使用了我CPU的25%。为什么不使用100%?这是否意味着在VS 2008中编译的.NET C#应用程序仅支持单核CPU?或者有什么办法可以强制它使用所有的CPU?
我一直在做一些关于.NET C#应用程序使用资源(如CPU或内存)的测试。我写了一些计算大量数值的循环,我对算法的权重感到满意。如何让我的C#应用程序利用多个处理器内核?
我有一个四核2.4 GHz处理器,但我注意到,在任务管理器中,我的应用程序只使用了我CPU的25%。为什么不使用100%?这是否意味着在VS 2008中编译的.NET C#应用程序仅支持单核CPU?或者有什么办法可以强制它使用所有的CPU?
如果我使用Background-workers,如果我有CPU QuadCore 4CPU可以有人写一个例子,那么它如何反应@那个CPU呢?
它会运行在1核心,除非你专门启动了一些线程。
最简单的方法是将一个方法推送到ThreadPool上。
System.Threading.ThreadPool.QueueUserWorkItem(DoSomething);
void DoSomething() { ... }
这一切都取决于你如何修改你的代码来使用多个核心。
除非您正在执行并行或多线程操作,否则该程序将不会使用多个核心。
.NET 4有一个库可以帮助你:Parallel LINQ。欲了解更多信息,请参阅本页:http://msdn.microsoft.com/en-us/library/dd997425.aspx
使用.NET 4.0
TaskLibrary
这是专门从多核处理器中受益。
现在运行你的代码需要多长时间?你确定你需要额外的速度吗?这可能会让你的程序更加复杂。 – Justin 2011-01-11 13:39:42
虽然您确实需要考虑多核心使用情况来设计您的应用程序,计划你的应用程序中CPU密集型的任务,看看你是否可以将它们缩减为异步操作。 – RobS 2011-01-11 14:45:53