Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Arbeiten mit TThreadList (https://www.delphipraxis.net/176021-arbeiten-mit-tthreadlist.html)

Captnemo 7. Aug 2013 09:36

Delphi-Version: XE2

Arbeiten mit TThreadList
 
Ich schreibe gerade an einem Programm, in dem eine vom Benutzer festgelegte Anzahl an Threads starten sollen. Da ich bei Programmende alles schön wieder aufräumen will, muß ich ja dafür sorgen, dass alle Threads brav beendet sind.
Kann ich dafür die TThreadList verwenden?

Funktioniert das ähnlich wie eine TObjectList?
Also TObject->TObjectList und TThread->TThreadList?

Gibt's irgendwo ein schickes Tutorial, dass man auch versteht, wenn bisher wenig mit TThreads gearbeitet hat?

Oder gibt's eine bessere oder einfachere Möglichkeit, die TThreads in einer Liste zu verwalten, und diese beim Beenden abzuarbeiten.

Sir Rufo 7. Aug 2013 09:40

AW: Arbeiten mit TThreadList
 
Einfach in eine TObjectList packen, aber beim Aufräumen die Threads beenden, auf Fertigstellung warten und dann wegwerfen.

Eine Delphi-Referenz durchsuchenTThreadList ist dafür gedacht, dass mehrere Threads in diese Liste greifen können (und zwar mit Delphi-Referenz durchsuchenTThreadList.LockList)

Achtung: Das Codebeispiel bitte nur unter dem Aspekt TThtreadList betrachten, ansonsten ist das ein absolutes NoGo-Beispiel

Captnemo 7. Aug 2013 09:46

AW: Arbeiten mit TThreadList
 
Ah, cool. Danke für deine schnelle Hilfe.

Union 7. Aug 2013 10:13

AW: Arbeiten mit TThreadList
 
Was willst Du denn mit der Begrenzung erreichen? Etwa eine Steuerung der Auslastung?

Captnemo 7. Aug 2013 10:28

AW: Arbeiten mit TThreadList
 
Zitat:

Zitat von Union (Beitrag 1223835)
Was willst Du denn mit der Begrenzung erreichen? Etwa eine Steuerung der Auslastung?

Was für eine Begrenzung?
Ich will nur wissen, wie viele Thread laufen, damit ich die bei Programmende sauber beenden kann.

Union 7. Aug 2013 10:33

AW: Arbeiten mit TThreadList
 
Zitat:

Zitat von Captnemo (Beitrag 1223821)
... in dem eine vom Benutzer festgelegte Anzahl an Threads starten sollen

Daher kam meine Frage.

Captnemo 7. Aug 2013 11:52

AW: Arbeiten mit TThreadList
 
Zitat:

Zitat von Union (Beitrag 1223838)
Zitat:

Zitat von Captnemo (Beitrag 1223821)
... in dem eine vom Benutzer festgelegte Anzahl an Threads starten sollen

Daher kam meine Frage.

Genau genommen geht es darum, seriell angeschlossene Geräte abzufragen. Wieviele angeschlossen werde, dass wird vom User eingestellt. Es können also 3 aber auch 10 sein. Ich selbst begrenze die Anzahl nicht.

Klaus01 7. Aug 2013 12:40

AW: Arbeiten mit TThreadList
 
Zitat:

Zitat von Captnemo (Beitrag 1223848)
Zitat:

Zitat von Union (Beitrag 1223838)
Zitat:

Zitat von Captnemo (Beitrag 1223821)
... in dem eine vom Benutzer festgelegte Anzahl an Threads starten sollen

Daher kam meine Frage.

Genau genommen geht es darum, seriell angeschlossene Geräte abzufragen. Wieviele angeschlossen werde, dass wird vom User eingestellt. Es können also 3 aber auch 10 sein. Ich selbst begrenze die Anzahl nicht.

Die Anzahl der quasi parallel laufenden Threads sollte m.E. abhänging von der Anzahl der CPUs/der cores sein und nicht zwingend von der Anzahl der abzufragenden Geräte.

Grüße
Klaus

Captnemo 7. Aug 2013 13:08

AW: Arbeiten mit TThreadList
 
Zitat:

Zitat von Klaus01 (Beitrag 1223855)
Zitat:

Zitat von Captnemo (Beitrag 1223848)
Zitat:

Zitat von Union (Beitrag 1223838)
Zitat:

Zitat von Captnemo (Beitrag 1223821)
... in dem eine vom Benutzer festgelegte Anzahl an Threads starten sollen

Daher kam meine Frage.

Genau genommen geht es darum, seriell angeschlossene Geräte abzufragen. Wieviele angeschlossen werde, dass wird vom User eingestellt. Es können also 3 aber auch 10 sein. Ich selbst begrenze die Anzahl nicht.

Die Anzahl der quasi parallel laufenden Threads sollte m.E. abhänging von der Anzahl der CPUs/der cores sein und nicht zwingend von der Anzahl der abzufragenden Geräte.

Grüße
Klaus

Also darüber brauche ich ganz sicher keine Sorgen machen. Zum einen werde niemals mehr als 12 Geräte angeschlossen (das ist in diesem Anwendungsfall mal absolut sicher), und zum anderen liefern die Geräte nur in Intervallen von 10 Sekunden Daten, evtl. sogar mit viel größeren Abständen.
Dem zur Folge für meine Zwecke völlig okay. Ich hab's grad mal mit 20 Threads auf einem 1 Prozessorsystem getestet und hatte 0,1% Auslastung. Laufen wird es nachher auf einem 8-Core-System.

[OT on]
Hey, danke für eurer Interesse. Aber mir ging es tatsächlich um die Frage, die schon im ersten Thread stand. Nicht darum, ob und warum man die Threadanzahl begrenzen sollte. Solche Diskussionen ziehen diesen Beitrag nur unnötig in die Länge und nützen am Ende keinem. Außerdem wären dafür noch ganz andere Informationen über den Sinn und Zweck des Programm und der Threads notwendig.

Jetzt aber nicht gleich beleidigt sein, okay :-D

Daniel hatte es für mich mit seiner Antwort schon wie immer sehr treffend auf dem Punkt gebracht. :thumb::thumb:

[OT off]

Sir Rufo 7. Aug 2013 13:13

AW: Arbeiten mit TThreadList
 
Zitat:

Zitat von Captnemo (Beitrag 1223857)
Daniel hatte es für mich mit seiner Antwort schon wie immer sehr treffend auf dem Punkt gebracht. :thumb::thumb:

Wann hat der denn hier geantwortet? :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:01 Uhr.
Seite 1 von 3  1 23      

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