Einzelnen Beitrag anzeigen

Patrick

Registriert seit: 15. Sep 2003
184 Beiträge
 
Delphi 2010 Professional
 
#1

Hauptthread splitten und wieder zusammenführen

  Alt 1. Jul 2010, 14:35
Hallo,

Ich möchte eine Funktion parallelisieren. Der Code der die Funktion aufruft ist wurscht. Den Code meiner Funktion kann ich spielend parallelisieren. Aber der Code (Aufrufstack), der nach dem Aufruf meiner Funktion bearbeitet wird, ist der Knackpunkt. Ich weis nicht, was danach passiert. Die Funktion wird an X unterschiedlichen Stellen aufgerufen. Erstelle ich einfach nur Subthreads, die meine Aufgabe erfüllen, läuft der Hauptthread weiter und will Ergebnisse ausspucken, die noch gar nicht berechnet wurden. Er solle aber warten, bis meine Subthreads zu ende gerechnet haben. Den Hauptthread kann ich aber nicht so einfach pausieren, da sonst das Programm hängt und die Subthreads keine Synchonizes mehr machen können. Bleiben zwei Möglichkeiten: Ich sage dem Haupttherad er soll an der aktuellen Position Pausieren, aber trotzdem ProcessMessages abarbeiten. Oder ich merke mir irgendwie den Aufrufstack und unterbreche ihn an dieser Stelle.

Code:
     +-----+
     +-----+
-----+?????+-------
|    |      |
|    |      Code nach Funktionsaufruf
|    Funktionsaufruf
Code vor Funktionsaufruf
Sinn des ganzen ist es einfach für die spezielle Funktion alle CPU-Kerne zur Berechnung zu bemühen.
Genieße jede Minute deines Lebens, denn sie wird nicht wieder kommen.
  Mit Zitat antworten Zitat