2011-01-11 6 views
6

Przeprowadziłem kilka testów na temat sposobu, w jaki aplikacja .NET C# używa zasobów, takich jak procesor lub pamięć. Napisałem trochę pętli, które obliczają wartości dla dużej liczby liczb i jestem zadowolony z wagi algorytmu.Co mogę zrobić, aby moja aplikacja C# korzystała z wielu rdzeni procesorów?

Mam procesor Quad Core 2,4 GHz, ale zauważyłem, że w Menedżerze zadań moja aplikacja wykorzystuje tylko 25% mojego procesora. Dlaczego nie używa 100%? Czy to oznacza, że ​​aplikacja .NET C# skompilowana w VS 2008 obsługuje tylko procesor Single Core? Czy istnieje sposób, że mogę zmusić go do korzystania z wszystkich procesorów?

+1

Ile czasu zajmuje teraz uruchomienie kodu? Czy na pewno potrzebujesz dodatkowej prędkości? Może to znacznie utrudnić twój program. – Justin

+0

Musisz jednak zaprojektować aplikację z myślą o wielu podstawowych zastosowaniach; zaplanuj zadania w aplikacji, które wymagają dużej mocy obliczeniowej i sprawdź, czy możesz je ograniczyć do operacji asynchronicznych. – RobS

Odpowiedz

1

Co jeśli używam pracowników w tle, jeśli mam procesor QuadCore 4CPU, ktoś może napisać przykład, jak może zareagować na procesor?

+2

Tak, pracownicy pracujący w tle będą działać w oddzielnych wątkach i pozwolą na użycie więcej niż jednego rdzenia wykorzystania procesora. Aby użyć 4 rdzeni, potrzebujesz 4 wątków. Najtrudniejszą częścią jest ustalenie, jak najlepiej podzielić swoje zadanie na osobne zadania. – Justin

2

Będzie działał w 1 rdzeniu, chyba że specjalnie uruchomisz niektóre wątki.

Najprostszym sposobem jest wepchnięcie metody do ThreadPool.

System.Threading.ThreadPool.QueueUserWorkItem(DoSomething); 

    void DoSomething() { ... } 
5

Wszystko zależy od tego, w jaki sposób można zmodyfikować kod, aby użyć więcej niż jednego rdzenia.

Jeśli nie wykonujesz operacji równoległych lub wielowątkowych, program nie użyje więcej niż jednego rdzenia.

. NET 4 ma bibliotekę, która może pomóc: Równoległy LINQ. Aby uzyskać więcej informacji, zobacz tę stronę: http://msdn.microsoft.com/en-us/library/dd997425.aspx

2

Użyj .NET 4.0TaskLibrary, która została zaprojektowana do korzystania z procesorów wielordzeniowych.