AGB  ·  Datenschutz  ·  Impressum  







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

Thread restart

Ein Thema von FAM · begonnen am 19. Feb 2015 · letzter Beitrag vom 20. Feb 2015
Antwort Antwort
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.490 Beiträge
 
Delphi 12 Athens
 
#1

AW: Thread restart

  Alt 19. Feb 2015, 12:25
Der Thread als solches ist nach dem Verlassen der Execute-Methode bereits zerstört.
Nur das Objekt, das den Thread gekapselt hat, existiert noch. Das Neuerzeugen des Objekts kostet eigentlich fast keine Zeit.
Warum sollte man das alte Objekt dann wiederverwenden?
Das Neuerzeugen des Threads kann etwas Zeit benötigen, aber wir sprechen hier wahrscheinlich von weniger als einer Millisekunde.

Vieleicht interessiert dich in dem Zusammenhang das Konzept eines Threadpools.
Man erzeugt nicht mehr den Thread sondern die auszuführende Aufgabe als Klasse.
Diese übergibt man an den Threadpool zur Ausführung.
Ist die Aufgabe abgearbeitet, kann man diese danach erneut an den Threadpool übergeben.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#2

AW: Thread restart

  Alt 20. Feb 2015, 06:38
Lass doch deinen Code fast einfach, wie er ist:
Delphi-Quellcode:
Procedure TMyThread.Execute;
Begin
  while not terminated do
    case TriggerEvent.WaitFor(-1) of
      wrSignaled : ExecuteTheAction();
      wrTimeout,
      wrAbandoned : Terminate;
      wrError : { Fehler loggen };
    end;
end;

procedure TMyThread.RestartExecution;
Begin
  TriggerEvent.SetEvent;
end;

Constructor TMyThread.Create;
Begin
  ...
  TriggerEVent := .Create(nil, True, False, nil);
...
(Ungetestet, nur hingetippt)

Erzeuge den Thread. Er macht erst einmal nichts, sondern wartet, bis Du 'RestartExecution' aufgerufen hast.
Dann erledigt er seine Aufgabe und legt sich wieder schlafen.

Alternativ kannst Du dir mal den Workerthread-Poolanschauen. Dort wird das Konzept eines Threads etwas anders behandelt. Vielleicht ist das was.
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:43 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