Что я могу сделать, чтобы приложение C # использовало несколько процессорных ядер? - PullRequest
6 голосов
/ 11 января 2011

Я провел несколько тестов на предмет того, как приложение .NET C # использует ресурсы, такие как процессор или память. Я написал несколько циклов, которые вычисляют значения для большого числа чисел, и я удовлетворен весом алгоритма.

У меня есть процессор Quad Core 2,4 ГГц, но я заметил, что в диспетчере задач мое приложение использует только 25% моего процессора. Почему он не использует 100%? Означает ли это, что приложение .NET C #, скомпилированное в VS 2008, поддерживает только одноядерный процессор? Или есть способ, которым я могу заставить его использовать все процессоры?

Ответы [ 4 ]

5 голосов
/ 11 января 2011

Все зависит от того, как вы можете изменить свой код для использования более одного ядра.

Если вы не выполняете параллельные или многопоточные операции, программа не будет использовать более одного ядра.*

.NET 4 имеет библиотеку, которая может вам помочь: Parallel LINQ.Для получения дополнительной информации см. Эту страницу: http://msdn.microsoft.com/en-us/library/dd997425.aspx

2 голосов
/ 11 января 2011

Используйте .NET 4.0 TaskLibrary, который предназначен для использования многоядерных процессоров.

2 голосов
/ 11 января 2011

Он будет работать на 1 ядре, если вы специально не начнете несколько потоков.

Самый простой способ - вставить метод в ThreadPool.

   System.Threading.ThreadPool.QueueUserWorkItem(DoSomething);

   void DoSomething() { ... }
1 голос
/ 11 января 2011

Как насчет того, чтобы использовать фоновых рабочих, если у меня есть процессор QuadCore 4CPU, может кто-нибудь написать пример, как он может реагировать на этот процессор?

...