我一直在对.NET C#应用程序使用资源,如CPU或内存的方式进行测试。我编写了一些循环来计算大量数字的值,并且我对算法的负载感到满意。
我有一个四核2.4 GHz处理器,但是我注意到在任务管理器中,我的应用程序仅使用了25%的CPU。为什么它不使用100%?这是否意味着在VS 2008编译的.NET C#应用程序只支持单核CPU?还是有一种方法可以强制其使用所有CPU?
我一直在对.NET C#应用程序使用资源,如CPU或内存的方式进行测试。我编写了一些循环来计算大量数字的值,并且我对算法的负载感到满意。
我有一个四核2.4 GHz处理器,但是我注意到在任务管理器中,我的应用程序仅使用了25%的CPU。为什么它不使用100%?这是否意味着在VS 2008编译的.NET C#应用程序只支持单核CPU?还是有一种方法可以强制其使用所有CPU?
一切取决于你如何修改代码以使用多个核心。
除非进行并行或多线程操作,否则程序将不会使用多个核心。
.NET 4 有一个库可以帮助你:Parallel LINQ。更多信息请参见此页面:http://msdn.microsoft.com/en-us/library/dd997425.aspx
如果您不特别启动一些线程,它将在1个核心上运行。
最简单的方法是将一个方法推送到线程池中。
System.Threading.ThreadPool.QueueUserWorkItem(DoSomething);
void DoSomething() { ... }
如果我使用后台工作线程,假设我的CPU是四核心的,有人可以举个例子来说明它会如何反应吗?