Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Erkennen ob Thread initialisirt ist? (https://www.delphipraxis.net/119081-erkennen-ob-thread-initialisirt-ist.html)

gandime 20. Aug 2008 19:53


Erkennen ob Thread initialisirt ist?
 
Hi,
ich habe einen Thread-Array wo andauernt neue Threads initialisiert werden und wieder zerstört werden.
Da ich nicht möchte das mein Array unendlich groß wird möchte ich überprüfen welche Threads nicht mehr aktiv sind und diese dann mit neuen Daten starten.

mfg
gandime

divBy0 20. Aug 2008 20:16

Re: Erkennen ob Thread initialisirt ist?
 
Es gibt das OnTerminate-Ereignis wenn du TThread verwendest. Vielleicht hilft dir das ja weiter.

gandime 20. Aug 2008 20:30

Re: Erkennen ob Thread initialisirt ist?
 
Ja daran hab ich auch schon gemacht, aber dann müsste ich wieder einen zweiten Array brauchen wo drin gespeichert wird ob der Thread noch aktiv ist.
Das wollte ich egl nicht machen...
Ich hatte an soetwas wie assigned gedacht aber das ist mit den threads nicht möglich!
edit:
man kann es nichtmal so überprüfen cs[i]=nil

sx2008 20. Aug 2008 20:35

Re: Erkennen ob Thread initialisiert ist?
 
Zitat:

Zitat von gandime
ich habe einen Thread-Array ...

Ein Liste ist doch in diesem Fall viel geeigneter - speziell meine ich damit die Klasse TObjectList.
Wenn du dann schon bei einer Liste bist, dann kannst du auch noch einen Schritt weitergehen und einen Thread-Pool einrichten.
Workerthread-der Diener im Hintergrund

himitsu 20. Aug 2008 20:42

Re: Erkennen ob Thread initialisirt ist?
 
Zitat:

Zitat von gandime
aber dann müsste ich wieder einen zweiten Array brauchen wo drin gespeichert wird ob der Thread noch aktiv ist.

du mußt doch einfach nur, wenn ein Thread sich beendet, dessen eintrag aus dem Array/Liste entfernen.

gandime 20. Aug 2008 20:58

Re: Erkennen ob Thread initialisirt ist?
 
Zitat:

Zitat von himitsu
du mußt doch einfach nur, wenn ein Thread sich beendet, dessen eintrag aus dem Array/Liste entfernen.

ja das wäre das einfache blos ich weiss nicht wie^^ nen Beispiel ich habe 3 Threads am laufen und der 2. wird beendet
cs[0] aktiv
cs[1] unaktiv
cs[2] aktiv

wie sollte ich denn jetzt z.B. dein 2. aus der liste entfernen?

Luckie 20. Aug 2008 21:07

Re: Erkennen ob Thread initialisirt ist?
 
Ich würde die Arbeit Windows machen lassen und mit MSDN-Library durchsuchenQueueUserWorkItem arbeiten. Siehe dazu mein Threading Tutorial Kapitel 8.

gandime 20. Aug 2008 21:26

Re: Erkennen ob Thread initialisirt ist?
 
ich würde am lieben die Methode von himitsu nutzen das würde für mich am wenigsten arbeit bedeuten!
Ist vlt nicht die beste möglichkeit aber wird wohl reichen ;-)

Luckie 20. Aug 2008 21:48

Re: Erkennen ob Thread initialisirt ist?
 
Nö, ich denke meine ist am wenigsten Arbeit, da die Verwaltung des Threadpools komplett von Windows übernommen wird.

gandime 20. Aug 2008 22:27

Re: Erkennen ob Thread initialisirt ist?
 
ja ich bin blos schon fertig mit meinem Prog bis auf dieses ;-)
und ich habe immer eine dynamische anzahl von Threads offen ohne Limit geht es dann trotzdem?


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:21 Uhr.
Seite 1 von 2  1 2      

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