(Moderator)
Online
Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
|
Re: Programmierung von Computer mit mehreren Prozessorkernen
12. Feb 2007, 13:20
Die Programmiersprache ist dabei nahezu vollkommen egal.
Im Prinzip musst Du nur beachten, dass Du in verschiedenen Threads eben parallel arbeitest und diese sauber Synchronisierst. Die TThread Klasse hilft Dir da sogar bei, bei C++ ist das etwas aufwändiger (eigenes Speichermanagement bei Threadsynchronisierung ist etwas, dass ich nur ungern selber machen möchte - da nehm ich lieber eine Plattform die mir das zum Teil abnimmt, also z.B. Delphi mit TThread oder eben eine .NET - Sprache).
Was passiert wenn die Anwendung auf einem Single-Core läuft ist damit eigentlich auch schon beantwortet: Der einzelne Kern wird zwischen den laufenden Threads umschalten und sie eben Stückweise 'virtuell Parallel' nebeneinander her ausführen. Physikalisch rechnet die CPU dabei natürlich immer nur Teile der einzelnen Threads hintereinander durch.
Durch dieses Umschalten zwischen den Threads hast Du bei einem einzelnen Kern natürlich einen gewissen Overhead, der auch Performance kosten kann - und bei überaus vielen Threads definitiv auch wird.
Bei richtiger Parallelisierung achtet man daher darauf, die Anzahl der verwendeten Threads nicht hardcoded festzulegen, sondern die Anzahl der parallel abzuarbeitenden Aufgaben mit den verfügbaren Kernen mit zu skalieren und eben dynamisch bei Bedarf einzelne Threads zu starten.
|