Wie schreiben .NET-Anwendungen nutzen, die multi-core-Prozessoren
Als multi-core-Prozessoren werden mehr und mehr populär, ich denke, es wäre klug für mich, zu werden vertraut mit, wie code zu schreiben ist, Sie zu nutzen. Ich bin ein .NET-Entwickler, und bin mir nicht sicher, wo Sie anfangen (im ernst, ich habe keine Ahnung, wo Sie beginnen). Irgendwelche Vorschläge?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Multi-core-Programmierung ist im wesentlichen multi-threaded Programmierung. Solange Ihre Anwendung ist multi-threaded, das Betriebssystem bestimmen, das core zu führen, welcher thread auf.
Dann auch So, deine eigentliche Frage sollte sein, welche Art von Anwendungen würden davon profitieren multi-threaded? Denken Sie an eine solche Anwendung, dann instanziieren mehrere threads zu lösen, in gleichen Anteilen das problem.
Der beste Weg zu beginnen ist, greifen die aktuelle CTP-Version von der parallel extensions framework und starten das Pflügen durch Ihre sample-code.
Lesen, auf das asynchrone Programmiermodell .NET verwendet. Studie der BeginXXX-und EnxXXX Paradigma ermöglicht, dass die Delegierten zur Ausführung im threadpool.
Den Stream-Klassen haben alle BeingXXX, EndXXX-Methoden (zB BeginRead, EndRead), mit denen Sie zu tun asynchrone IO. Wenn Sie arbeiten, etwas, das stark IO basieren, werden Sie wollen, verwenden Sie diese Methoden zur Steigerung der Parallelität.
Ich nicht empfehlen, die Bücher nicht mehr sehr oft, aber Joe Duffy ' s Concurrent Programming on Windows ist einfach unersetzlich.
Schauen Sie für Infos auf die .net 4.0. Es wird das hinzufügen von verschiedenen Konstrukten für Sie.
Wie JaredPar, sagte der Parallel Extensions sind ziemlich gut. Ich spielte mit Ihnen ein bisschen und Sie sind einfach zu bedienen und Leistung hinzufügen.
Die Konstrukte, die ich sehr mochte waren Parallel.ForEach() und PLinq.
Parallel.ForEach ist ähnlich wie die ForEach(Delegierter) - Funktion, die Sie haben in DotNet 2.0 Sammlungen. Es dauert ein action-Delegat und es läuft parallel.
Plinq ermöglicht die Ausführung einer normalen Linq-Abfrage in eine parallel-Mode durch hinzufügen .AsParallel() auf das Ende der Abfrage.
Schauen Sie sich die links Jared geschrieben für mehr info.
Dies könnte ein guter Ausgangspunkt.
Einfach durch die Aufteilung des Projekts in verschiedene threads spezialisiert, um eine bestimmte Funktion lassen Sie die Vorteile von mehreren Kernen. Die OS-handles Planung der verschiedenen threads zu den verfügbaren Prozessor-Kern.