![]() |
Starten eines Threads
Hallo,
ich hab mal eine Frage: ich habe einen Thread, den ich, je nachdem wann ich ihn brauche, neu starte. Während er läuft, kann man ihn nicht mehr neu starten. Was mir jetzt nicht gefällt ist mein Code zum starten des Threads:
Delphi-Quellcode:
Was mich daran stört ist, dass der Thread jedesmal neu erzeugt wird, wenn er gestartet wird.
//Thread erzeugen
ThreadUpdate := TUpdateThread.Create(true); //Thread beschreiben with ThreadUpdate do begin Priority := tpNormal; FreeOnTerminate := True; Resume; end; Ist das so ok so, oder kann man das etwas besser machen (nur einmal createn etc)? Ach ja - der Thread beendet sich selbst - der läuft nicht ewig. |
Re: Starten eines Threads
Hi,
es ist vollkommen ok (gewollt, super, etc) dass ein Thread jedesmal neu erstellt wird, wenn man ihn ausführen möchte. Darin liegt eigentlich gerade der Sinn der Nebenläufigkeit, würde noch ein Thread existieren, so kann der gerade seine Arbeit zu ende machen während dein neu erzeugter Thread mit anderen Daten arbeitet. Würdest du diese Möglichkeit nicht haben, hättest du echt ein riesiges Problem zu skalieren. Wenn du ein Multiprozessorsystem mal wirklich auslasten willst, wirst du sicherlich mehr als einen Thread (häufig mehrere Eingaben aber gleiche Operation) starten. Dass du dazu nicht ein SIMD brauchst, sondern dass auch auf einem normalen x86 starten könntest dürfte klar sein. Ist also an sich schon ganz richtig so. Zudem kannst du es natürlich um gehen, dein Thread könnte eine boolsche Variable besitzen, die er prüft bevor er seine Anweisungen wiederholt (while schleife). Bevor er dann fertig ist, setzt er diese Variable dann immer false und du legst ihn schlafen, zum Aufwecken setzt du diese Variable true und benutzt resume. Damit er nicht beendet wird, weil die Variable gerade false ist noch eine endlosschleife rum. Und ob das dann schöner und sauberer ist als den jedes mal neu zu erzeugen... Gruß Der Unwissende |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:39 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