AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Thread Vs Timer !!! Wievile Threads sind zu viel ?
Thema durchsuchen
Ansicht
Themen-Optionen

Thread Vs Timer !!! Wievile Threads sind zu viel ?

Ein Thema von DataCool · begonnen am 14. Sep 2003 · letzter Beitrag vom 16. Sep 2003
Antwort Antwort
Seite 2 von 3     12 3      
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#11

Re: Thread Vs Timer !!! Wievile Threads sind zu viel ?

  Alt 15. Sep 2003, 12:50
Das kann sein das der Zusätzliche Thread durch SetTimer erzeugt wird, doch das dachte ich wäre ein SystemThread.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#12

Re: Thread Vs Timer !!! Wievile Threads sind zu viel ?

  Alt 15. Sep 2003, 12:54
Hab das mal getestet.
Bei mir (Win2k) gibt es keinen extra Thread bei Timer Einsatz.

TIPP:
Setzt mal einen Timer z.B. auf 2 sec.
In der Timer-Proc (WM_TIMER) eine Message-Box zeigen und dann das verhalten studieren.

Da sollte herauskommen das WM_TIMER eine normale Windowsnachricht ist.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Thread Vs Timer !!! Wievile Threads sind zu viel ?

  Alt 15. Sep 2003, 14:10
Mit SetTimer wird an das aufrufende Fenster und somit an den primären Thread eine WM_TIMER Nachricht geschickt. Dies ist eine Nachricht, wie jede andere auch. Wo soll da der zweite Thread herkommen?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Wormid
Wormid

Registriert seit: 26. Aug 2003
Ort: Steinfurt
292 Beiträge
 
Delphi XE2 Professional
 
#14

Re: Thread Vs Timer !!! Wievile Threads sind zu viel ?

  Alt 15. Sep 2003, 16:05
Und hier mal ein Link zu dem Source einer ThreadedTimer Komponente... da kann man dann mal als Beispiel sehen, wie man einen TTimer in einen eigenen Thread zwängen kann.

Gruß Wormid
Debuggers don't remove Bugs, they only show them in Slow-Motion.
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#15

Re: Thread Vs Timer !!! Wievile Threads sind zu viel ?

  Alt 16. Sep 2003, 16:57
Hi Leute,

nochmal ne Frage zu dem Thema Threads :

Wenn ich einen Thread habe der nur alle 60 Sek./60000 ms. eine Aktion durchführen soll, darf ich dann im Execute des Threads den Thread mit sleep für 60 sek. schlafen legen, oder muss ich z.B. jede Sekunde überprüfen, ob der Thread nicht beendet wurde.

ich poste einfach mal zwei Code Beispiele, dann wid klar was ich meine :

Code 1(jetziger Zustand) :
Delphi-Quellcode:
procedure TmyThread.Execute;
Var iWait : Longint;
begin
   While not Terminated do begin
      doRequest;
      iWait := 0;
      While (not Terminated) and (iWait < 60000) do begin
         inc(iWait,500);
         sleep(500);
      end;
   end;
end;
Code 2(wäre von der Performence/Systembelastung natürlich besser) :
Delphi-Quellcode:
procedure TmyThread.Execute;
begin
   While not Terminated do begin
      doRequest;
      sleep(60000);
   end;
end;
Meine Befürchtung ist nur das bei Bsp. 2 im schlimmsten Fall beim Beenden der Applikation 60 Sek. darauf gewartet wird das der Thread mitbekommt das er sich beenden soll.

Danke im vorraus,

Data

[edit=Daniel B]Delphi-Tags korrigiert. Mfg, Daniel B[/edit]
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Thread Vs Timer !!! Wievile Threads sind zu viel ?

  Alt 16. Sep 2003, 16:59
Das sleep(60000) sorgt dafür, dass der Thread nur alle 60 Sekunden zuteilungsfähig wird.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#17

Re: Thread Vs Timer !!! Wievile Threads sind zu viel ?

  Alt 16. Sep 2003, 17:06
Hi Luckie,

d.h. also ich muss bei der ersten Variante bleiben, oder was kann ich anders machen ?

Gruß Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Thread Vs Timer !!! Wievile Threads sind zu viel ?

  Alt 16. Sep 2003, 17:09
Kommt drauf an. Wenn er nur alle 60 Sekunden was machen soll, dann reicht doch ein sleep(60000).
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#19

Re: Thread Vs Timer !!! Wievile Threads sind zu viel ?

  Alt 16. Sep 2003, 17:14
Das ist schon klar,

bekommt der Thread aber trotzdem mit, das er beendet werden soll und verlässt die Execute Methode ?

Angenommen Thread hat gerade das gemacht was er machen soll,
bekommt jetzt den Sleep(60000) Befehl
eine sek. später schliesse ich meine Applikation

Bekommt der Thread das mit oder bleibt die Applikation solange hängen bis die 60 Sek. des Threads um sind ?

Gleich noch ne Frage :

Wenn der Thread im "Sleep" ist, kann ich in der Zeit trotzdem eine public Methode des Threads aufrufen ? (Die betrifft in keinster Weise die Execute Schleife)

Danke,

Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Thread Vs Timer !!! Wievile Threads sind zu viel ?

  Alt 16. Sep 2003, 17:18
Nein, wärend des des "sleeps" bekommt der Thread keine Rechenzeit, kann also nichts machen.
Wenn du den Prozess schließt, dann werden auch automatisch alle zugehörigen Thread-Objekte zerstört egal in welchem Zustand sie sind.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 06:32 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