AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TWorkerthread fertig?

Ein Thema von klebe7 · begonnen am 3. Okt 2008 · letzter Beitrag vom 3. Okt 2008
Antwort Antwort
klebe7

Registriert seit: 2. Okt 2008
19 Beiträge
 
#1

TWorkerthread fertig?

  Alt 3. Okt 2008, 14:58
Hallo,

Kurz und knapp: Wie kann ich bei der TWorkerthread Kompo. von alzaimar am besten feststellen, ob es fertig ist? also keine Jobs mehr zum Abarbeiten vorhanden sind.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: TWorkerthread fertig?

  Alt 3. Okt 2008, 15:51
Wenn die Jobliste leer ist, denke ich. Müsste mal nachschauen. Hast Du die Threadpool-Klasse?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
klebe7

Registriert seit: 2. Okt 2008
19 Beiträge
 
#3

Re: TWorkerthread fertig?

  Alt 3. Okt 2008, 15:58
Zitat von alzaimar:
Wenn die Jobliste leer ist, denke ich. Müsste mal nachschauen. Hast Du die Threadpool-Klasse?
Hallo,

Ich hab den ersten Anhang aus diesem Thread geladen.
Mein Programm arbeiten ungefähr so, wie in der Demo.
Wie kann ich denn auslesen, wie viele Jobs noch abzuarbeiten sind?
Ich habe mal versucht PendingJobCount in einem Timer auf 0 zu überprüfen, aber diese Eigenschaft gibt zu früh 0 zurück, sodass es so nicht geht.
Zudem würde ich es auch gerne ohne Timer machen.

Gibt es da noch eine saubere Lösung? In der Demo wird man ja auch nicht benachrichtigt, wenn alles fertig ist.

Danke und mfg
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: TWorkerthread fertig?

  Alt 3. Okt 2008, 17:40
Der ThreadPool weiss selbst nicht, wann auch der letzte Job seine Arbeit beendet hat, das stimmt. Grundsätzlich ist das ja nicht die Aufgabe des Threadpools, denn dieser verteilt die Arbeit nur. Natürlich wäre es interessant, aber imho ist das die Aufgabe der Jobs: Verwalte einen threadsicheren Zähler, der beim .Create deiner Jobs hoch- und beim .Destroy wieder heruntergezählt wird. DAS wäre dann der Zähler, wie viele Jobs noch arbeiten.

Threadsicher wird eine Variable immer dann, wenn sichergestellt ist, das immer nur ein Thread Schreibzugriff auf die Variable hat. Dazu kannst Du eine CriticalSection nehmen, oder Du schaust Dir die Funktion 'InterlockedIncrement' und 'InterlockedDecrement' an
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
klebe7

Registriert seit: 2. Okt 2008
19 Beiträge
 
#5

Re: TWorkerthread fertig?

  Alt 3. Okt 2008, 18:10
Zitat von alzaimar:
Der ThreadPool weiss selbst nicht, wann auch der letzte Job seine Arbeit beendet hat, das stimmt. Grundsätzlich ist das ja nicht die Aufgabe des Threadpools, denn dieser verteilt die Arbeit nur. Natürlich wäre es interessant, aber imho ist das die Aufgabe der Jobs: Verwalte einen threadsicheren Zähler, der beim .Create deiner Jobs hoch- und beim .Destroy wieder heruntergezählt wird. DAS wäre dann der Zähler, wie viele Jobs noch arbeiten.

Threadsicher wird eine Variable immer dann, wenn sichergestellt ist, das immer nur ein Thread Schreibzugriff auf die Variable hat. Dazu kannst Du eine CriticalSection nehmen, oder Du schaust Dir die Funktion 'InterlockedIncrement' und 'InterlockedDecrement' an
Jo, Danke so hatte ich's mir auch gedacht.

~erledigt~
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz