Thema: Delphi Workerthreadpool Frage

Einzelnen Beitrag anzeigen

Dejan Vu
(Gast)

n/a Beiträge
 
#4

AW: Workerthreadpool Frage

  Alt 16. Feb 2015, 21:26
"A
Wie frage oder fange ich es ab wenn Alle Threads (Job's) fertig sind?
Ich habe es über Umwege abgefangen. Sprich meine Liste gezählt und wenn die Endzahl erreicht ist eben als fertig gemeldet.
Das ist aber nicht gerade eine schöne Methode.
Doch, eigentlich schon.

Aus Sicht des Threadpools gilt: Nach dem Job ist vor dem Job, oder einfacher ausgedrückt: Es gibt für ihn kein 'alles erledigt'. Wenn Du 30 Jobs zu erledigen hast, aber erst 10 in die Queue packst und später nochmal 10, dann ist der Pool zwischendurch mal 'fertig' bzw. ist die Queue leer, aber das heißt eben nicht, das nicht vielleicht doch noch etwas kommt.

Dein Ansatz ist also vollkommen richtig, denn nur der Aufrufer weiß, wann alle Jobs abgearbeitet sind.

Du kannst z.B. eine Variable XYZ auf 30 setzen und jeder Job dekrementiert diese Variable in seinem Destruktor mit 'InterlockedDecrement' (=Threadsicher). Wenn die bei 0 ist, bist Du fertig.

Geändert von Dejan Vu (17. Feb 2015 um 06:45 Uhr)
  Mit Zitat antworten Zitat