Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Threads: bleibt ein Thread nach Beenden des Programms aktiv? (https://www.delphipraxis.net/120910-threads-bleibt-ein-thread-nach-beenden-des-programms-aktiv.html)

messie 18. Sep 2008 19:49


Threads: bleibt ein Thread nach Beenden des Programms aktiv?
 
Moin,

heute kam die Frage auf: gehört ein Thread zur Anwendung und wird er beim Beenden des Hauptthreads beendet und freigegeben? Der neue Kollege hat Einiges in Java gemacht, dort bleiben Threads nach Programmabstürzen wohl manchmal aktiv und beim Neustart des Programms chrasht das.

Grüße, Messie

Meflin 18. Sep 2008 19:53

Re: Noch'ne Grundsatzfrage zur Thread-Programmierung
 
Ein Thread läuft ja im Adressraum seines Prozesses. Wird der Prozess beendet, ist der Thread somit einfach futsch ;)

Apollonius 18. Sep 2008 19:53

Re: Noch'ne Grundsatzfrage zur Thread-Programmierung
 
In Delphi wird am Ende des Haupt-Blocks (begin ... end.) automatisch @Halt0 aufgerufen, welches wiederum ExitProcess aufruft. Der Name sollte eindeutig sein. ;-) Alle Threads werden brutal terminiert.

messie 18. Sep 2008 20:10

Re: Noch'ne Grundsatzfrage zur Thread-Programmierung
 
Danke, dann habe ich das ja richtig erklärt.

Grüße, Messie

Khabarakh 18. Sep 2008 20:28

Re: Noch'ne Grundsatzfrage zur Thread-Programmierung
 
Zitat:

Zitat von messie
Der neue Kollege hat Einiges in Java gemacht, dort bleiben Threads nach Programmabstürzen wohl manchmal aktiv und beim Neustart des Programms chrasht das.

Zumindest im .Net-Framework gibt es Thread.IsBackground. Bei false hält der Thread auch nach Beendigung des Mainthreads den Prozess am Leben. Wenn allerdings bei einem Fehler im Mainthread _nicht_ der ganze Prozess beendet wird, hat der Code deines Kollegen ein ganz anderes Problem ;) .

Apollonius 18. Sep 2008 20:32

Re: Noch'ne Grundsatzfrage zur Thread-Programmierung
 
In Java gibt es Daemon-Threads. Alle anderen Threads verhindern, dass der Prozess beendet wird, wenn die main-Methode beendet wurde. Das dürfte also ziemlich identisch mit .NET sein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:21 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz