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?
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.
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.
Ich empfehle Bücher nicht mehr sehr oft, aber Joe Duffys Concurrent Programming unter Windows ist einfach unersetzlich.
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.