2011-01-11 8 views
6

Ho fatto alcuni test sul modo in cui un'applicazione .NET C# utilizza risorse, come CPU o memoria. Ho scritto alcuni cicli che calcolano i valori per una grande quantità di numeri e sono soddisfatto del peso dell'algoritmo.Cosa posso fare per fare in modo che l'applicazione C# si avvantaggi di più core del processore?

Ho un processore Quad Core da 2,4 GHz, ma ho notato che In Task Manager, la mia applicazione utilizza solo il 25% della mia CPU. Perché non usa il 100%? Significa che un'applicazione .NET C# compilata in VS 2008 supporta solo CPU Single Core? O c'è un modo in cui posso forzarlo a usare tutte le CPU?

+1

Quanto tempo impiega il codice per eseguire ora? Sei sicuro di aver bisogno della velocità extra? Potrebbe rendere il tuo programma molto più complicato. – Justin

+0

Tuttavia, devi davvero progettare la tua applicazione con l'utilizzo di più core; pianifica le attività nella tua applicazione che richiedono molta CPU e vedi se riesci a ridurle a operazioni asincrone. – RobS

risposta

1

Che dire se l'uso di fondo di lavoro, se ho CPU QuadCore 4CPU qualcuno può scrivere un esempio di come potrebbe reagire @ che CPU?

+2

Sì, i worker in background verranno eseguiti in thread separati e consentiranno più di 1 core dell'utilizzo della CPU. Avresti bisogno di un totale di 4 thread per utilizzare 4 core. La parte difficile è capire come meglio separare il tuo compito in lavori separati. – Justin

2

Verrà eseguito su 1 core, a meno che non si avvii determinati thread.

Il modo più semplice è spingere un metodo sul ThreadPool.

System.Threading.ThreadPool.QueueUserWorkItem(DoSomething); 

    void DoSomething() { ... } 
5

Tutto dipende da come è possibile modificare il codice per utilizzare più di un core.

A meno che non si eseguano operazioni parallele o multi-thread, il programma non utilizzerà più di un core.

.NET 4 dispone di una libreria che può essere d'aiuto: LINQ parallelo. Per ulteriori informazioni consulti la pagina http://msdn.microsoft.com/en-us/library/dd997425.aspx

2

Uso .NET 4.0TaskLibrary che è stato progettato per beneficiare processori multi-core.