So schreiben Sie .NET-Anwendungen, die Multi-Core-Prozessoren verwenden

7

Da Multi-Core-Prozessoren immer beliebter werden, wäre es für mich klug, sich mit dem Schreiben von Code vertraut zu machen, um sie auszunutzen. Ich bin ein .NET-Entwickler und bin mir nicht sicher, wo ich anfangen soll (ernsthaft, ich habe keine Ahnung , wo ich anfangen soll). Irgendwelche Vorschläge?

    
Josh Stodola 03.03.2009, 19:29
quelle

8 Antworten

12

Multi-Core-Programmierung ist im Wesentlichen Multithreading-Programmierung. Solange Ihre Anwendung Multi-Threaded ist, wird das Betriebssystem bestimmen, welcher Kern welchen Thread ausführen soll.

Also, Ihre eigentliche Frage sollte sein, welche Art von Anwendungen würde davon profitieren, Multi-Threading zu sein? Denken Sie an eine solche Anwendung und instanziieren Sie mehrere Threads, um gleiche Teile des Problems zu lösen.

    
Dmitry Brant 03.03.2009, 19:42
quelle
3

Der beste Weg, um anzufangen, ist, sich das neueste CTP des Parallelen-Extensions-Frameworks zu schnappen und den Beispielcode zu durchsuchen.

JaredPar 03.03.2009 19:34
quelle
2

Lesen Sie das asynchrone Programmiermodell, das .NET verwendet. Studieren Sie das BeginXXX- und das EnxXXX-Paradigma, das Delegaten die Ausführung im Threadpool ermöglicht.

Die Stream-Klassen haben alle BeingXXX, EndXXX-Methoden (zB BeginRead, EndRead), mit denen Sie asynchrone IOs ausführen können. Wenn Sie an etwas arbeiten, das stark auf IO basiert, sollten Sie diese Methoden verwenden, um die Parallelität zu erhöhen.

    
Sean 03.03.2009 19:34
quelle
2

Ich empfehle Bücher nicht mehr sehr oft, aber Joe Duffys Concurrent Programming unter Windows ist einfach unersetzlich.

    
Yes - that Jake. 03.03.2009 19:34
quelle
1

Suchen Sie nach Informationen zur .net 4.0. Es wird verschiedene Konstrukte dafür hinzufügen.

    
eglasius 03.03.2009 19:34
quelle
1

Wie JaredPar sagte, sind die parallelen Erweiterungen ziemlich gut. Ich habe mit ihnen ein bisschen gespielt und sie sind einfach zu bedienen und fügen Leistung hinzu.

Die Konstrukte, die ich sehr mochte, waren Parallel.ForEach () und PLinq.

Parallel.ForEach ähnelt der Funktion ForEach (Delegate), die Sie in DotNet 2.0-Sammlungen haben. Es nimmt einen Aktionsdelegaten und führt es parallel aus.

Mit Plinq können Sie jede normale Linq-Abfrage parallel ausführen, indem Sie .AsParallel () am Ende der Abfrage hinzufügen.

Sieh dir die Links an, die Jared für weitere Informationen veröffentlicht hat.

    
Sruly 03.03.2009 20:06
quelle
0

Dies könnte einen guten Startplatz schaffen.

    
Joel Mueller 03.03.2009 19:33
quelle
0

Wenn Sie Ihr Projekt einfach in verschiedene Threads aufteilen, die auf eine bestimmte Funktion spezialisiert sind, können Sie mehrere Kerne nutzen. Das OS übernimmt die Planung der verschiedenen Threads für den am meisten verfügbaren Prozessorkern.

    
Daniel 03.03.2009 19:41
quelle

Tags und Links