Einzelnen Beitrag anzeigen

Benutzerbild von Hannes91
Hannes91

Registriert seit: 28. Aug 2010
Ort: Hamburg
15 Beiträge
 
Delphi 2010 Professional
 
#4

AW: Rückgabewert von Threads

  Alt 7. Sep 2011, 11:50
Hallo zusammen,

kaum hatte ich mir gestern Abend die Ideen von Betrag #2 zu Herzen genommen, ergab sich postwendend ein zweites Problem in diesem Kontext.

In einer Schleife for i := 0 to iBloecke - 1 erzeuge ich bei jedem Durchlauf einen Thread (mithilfe der Klasse TThread), sofern die maximale Anzahl nicht überschritten wird (hier: 4). Diese erhalten, wie eingangs erwähnt, ihre Aufträge übermittelt und beginnen unverzüglich mit der Berechnung.
Sofern alle "Slots" belegt sind, sprich max. Anzahl an Threads erreicht ist, müsste das Hauptprogramm logischerweise in der Schleife warten, bis die Threads wieder geschlossen sind. Im OnTerminate lasse ich mir vorher die Ergebnisse sichern.
  • Wäre es hier möglich, Waitformultipleobjects(length(lpHandles), @lpHandles[0], true, INFINITE); zu nehmen?
  • Könnte es bei "kurzen" Aufträgen zu Problemen kommen, dass der Thread schon vor Aufruf von waitformultipleobjects beendet ist, welcher erst nach Start der max. Anzahl an Threads bei (i mod iThreads = iThreads - 1) or (i = iBloecke - 1) erfolgt?
  • Wie ist die zeitliche Reihenfolge - Ende von Execute --> OnTerminate(Aufruf einer Methode) --> bis hier wartet waitfor... ?
  • Wer muss den Thread wie schließen / schließt er sich doch selbst?

Ich hoffe doch inständig, dass ihr mir da etwas Licht ins Dunkle bringen könnt.

Liebe Grüße

Hannes
Hannes
  Mit Zitat antworten Zitat