2011-01-11 22 views
6

He estado haciendo algunas pruebas sobre la forma en que una aplicación .NET C# utiliza recursos, como la CPU o la memoria. Escribí algunos bucles que calculan valores para una gran cantidad de números y estoy satisfecho con el peso del algoritmo.¿Qué puedo hacer para que mi aplicación C# aproveche múltiples núcleos de procesador?

que tienen un procesador de cuatro núcleos a 2,4 GHz, pero me he dado cuenta de que en el Administrador de tareas, mi solicitud es sólo con el 25% de mi CPU. ¿Por qué no está usando 100%? ¿Eso significa que una aplicación .NET C# compilada en VS 2008 solo admite una CPU de núcleo único? ¿O hay alguna forma de obligarlo a usar todas las CPU?

+1

¿Cuánto tarda su código en ejecutarse ahora? ¿Estás seguro de que necesitas la velocidad extra? Podría hacer su programa significativamente más complicado. – Justin

+0

Realmente tiene que diseñar su aplicación con múltiples usos centrales en mente; planee las tareas en su aplicación que son intensivas de la CPU y vea si puede cortarlas a operaciones asincrónicas. – RobS

Respuesta

1

¿Qué pasa si el uso del fondo de trabajo, si tengo Puede alguien de CPU QuadCore 4CPU escribir un ejemplo de cómo podría reaccionar @ que la CPU?

+2

Sí, los trabajadores en segundo plano ejecutarán en hilos separados y permitirán más de 1 núcleo de utilización de CPU. Necesitarías un total de 4 hilos para usar 4 núcleos. La parte difícil es encontrar la mejor manera de dividir su tarea en trabajos separados. – Justin

2

Funcionará en 1 núcleo a menos que específicamente inicie algunos subprocesos.

La manera más fácil es insertar un método en el ThreadPool.

System.Threading.ThreadPool.QueueUserWorkItem(DoSomething); 

    void DoSomething() { ... } 
5

Todo depende de cómo se puede modificar el código para utilizar más de un núcleo.

A menos que usted está haciendo operaciones roscadas paralelas o múltiples, entonces el programa no utilizar más de un núcleo.

.NET 4 tiene una biblioteca que puede ayudarlo: Parallel LINQ. Para obtener más información, consulte esta página: http://msdn.microsoft.com/en-us/library/dd997425.aspx

2

Utilice .NET 4.0TaskLibrary que está diseñado para beneficiarse de procesadores multi-core.

Cuestiones relacionadas