AGB  ·  Datenschutz  ·  Impressum  







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

VCL-Threads mit FreeOnTerminate:=true?

Ein Thema von Delphi-Laie · begonnen am 19. Nov 2014 · letzter Beitrag vom 20. Nov 2014
Antwort Antwort
Seite 1 von 2  1 2      
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1

VCL-Threads mit FreeOnTerminate:=true?

  Alt 19. Nov 2014, 19:25
Hallo Delphifreunde, ich benutze für ein VCL-Progamm das VCL-Thread-Objekt (Datei -> neu -> Thread-Objekt), und zwar vielmals: Etliche Threads werden zur Laufzeit erzeugt und abgearbeitet, und sie enden mit dem Ende ihres jeweiligen Codes selbständig.

Ist es unter diesen Umständen ratsam, FreeOnTerminate:=true zu setzen? Ich tue das gleich am Beginn der überschriebenen Execute-Procedur, fand aber noch keinen auffälligen Unterschied, als wenn ich das weggelassen hätte.

Danke und Gruß

Delphi-Laie
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

AW: VCL-Threads mit FreeOnTerminate:=true?

  Alt 19. Nov 2014, 19:36
Wenn du Threads mit "Fire and forget" erstellst (also nicht irgendwo auf ihre Beendigung wartest und sie dann freigibst), erzeugst du mit FreeOnTerminate auf False Memleaks.
Dann wird nämlich die Thread Instanz nicht freigegeben.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#3

AW: VCL-Threads mit FreeOnTerminate:=true?

  Alt 19. Nov 2014, 19:43
Danke!

Also, ich erstelle sie mit create, aber nicht mit einem selbstgeschriebenen Konstruktor, sondern eben mit dem, den das VCL-Thread-Objekt bereitstellt: Threadklassenname.create(false). Und beenden tun sie sich von allein, weil eben der jeweilige Code endet.

Wenn ich Dich recht verstand, sollte FreeOnTerminate:=true also besser irgendwo im Threadcode auftauchen, nicht wahr?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: VCL-Threads mit FreeOnTerminate:=true?

  Alt 19. Nov 2014, 19:48
Ja, sollte er. Und zwar beim Erzeugen des Thread-Objekta.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#5

AW: VCL-Threads mit FreeOnTerminate:=true?

  Alt 19. Nov 2014, 19:50
Gut, danke Euch beiden! Werde ich ab sofort mich bemühen, auch daran zu denken.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: VCL-Threads mit FreeOnTerminate:=true?

  Alt 19. Nov 2014, 20:12
Beachte aber, dass du auf einen solchen Thread auf keinen Fall irgendwo sowas wie nen WaitFor aufrufst, denn dann knallt es (weil der Thread sich unterm WaitFor wegzerstört oder gar nicht mehr existiert)
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#7

AW: VCL-Threads mit FreeOnTerminate:=true?

  Alt 19. Nov 2014, 20:21
Soweit sind meine Threadkenntnisse noch nicht. Meine Threads haben, einmal erzeugt, vollauf zu tun, die warten auf nichts.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: VCL-Threads mit FreeOnTerminate:=true?

  Alt 19. Nov 2014, 20:31
Ich kenne keinen VCL-Thread, scheint was neues zu sein
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#9

AW: VCL-Threads mit FreeOnTerminate:=true?

  Alt 19. Nov 2014, 20:45
Ich kenne keinen VCL-Thread, scheint was neues zu sein
Laufen formularbasierte Delphi-Programme nicht in einem, eben dem VCL-Thread?

Vom VCL-Thread sprach zudem niemand. Ich bezeichnete das von Delphi vorgefertigte Thread-Grundgerüst als VCL-Thread-Objekt, weil Luckie es in seinem Script "Threads unter Delphi" so nannte.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: VCL-Threads mit FreeOnTerminate:=true?

  Alt 19. Nov 2014, 20:51
Nein, es gibt den MainThread und der hat darum auch eine Delphi-Referenz durchsuchenMainThreadID. Mit der VCL hat das rein gar nichts zu tun, denn die VCL bekommt den Thread zugewiesen und weil die VCL nicht threadsafe ist bleibt die da auch gefangen.
Dadurch könnte man fast sagen, dass der VCL-Thread gleich dem MainThread ist. Das macht mich dann aber stutzig wenn dann noch mehr VCL-Threads erzeugt werden sollen.

Ja, da hat der Luckie wohl mal was falsch verstanden, denn das ganze Thread-Gedöns gehört eindeutig zur RTL
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (19. Nov 2014 um 20:54 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 03:57 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