Einzelnen Beitrag anzeigen

Benutzerbild von DataCool
DataCool

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

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

  Alt 14. Sep 2003, 22:19
Hi Luckie,

die App soll auf alle noch gängigen Windows-Systemen laufen, auch Win98 u. WinME.

Zu den Threads :

Die meisten laufen im Hintergrund mit normaler bzw. niedriger Priorität und sollen nur in Intervallen a 60 bzw. 75 Sek. einen Http-Request(auch mit Indy) absetzen und anhand der Antwort Gui-Elemente aktualisieren, was ich auch mit Syncronize mache.

Hier mal ein Beispiel wie dir meisten meiner Threads ablaufen ;
Code:
procedure TAdminListThread.Execute;
Var iWait : Longint;
begin
   while not Terminated do begin
      DoRequest;
      //
      iWait := 0;
            // cIntervall ist in diesem Fall 75000
      While (not Terminated) and (iWait < cIntervall) do begin
         inc(iWait,500);
         sleep(500);
      end;
   end;
end;
Was mich nur wundert bzw. ärgert :
Bis vor kurzem hatte ich eine Version die einwandfrei lief und auch unter extremer Belastung nur max. 20% der CPU ausgelastet hat.

Dann habe ich wirklich nur ein paar Kleinigkeiten geändert, so unrelevate Sachen das ich die Änderungen nicht mal mehr aufzählen kann
Ich glaube ich habe einen Intervall von 140000 Sek. auf 120000 Sek geändert, zwei Timer auf Formulare gesetzt, die ich nur dynamisch erzeuge und danach wieder freigebe.
Und zwei drei andere Kleinigkeiten die mir aber nicht mehr einfallen

Das schlimme ist das ich normalerweise bei jeder Version/Release bevor ich sie hoch lade und den usern zur verfügung stelle, einmal komplett den Quellcode mit Version sichere.

Das habe ich vor lauter Stress leider nicht getan, d.h. die letzte Version wo dieses Phänomen der CPU-Belastung nicht auftrat ist schon etwas älter

Bei der ganzen App geht es um eine Live-Bildübertragung mit eingebauten Chat(deshalb die 2 TWebbrowser instanzen)
Die hauptsächlichen Zeitkritischen Threads sind die beiden Bildübertragungsthreads :
1. Ein WebServer mit IdHttpServer
2. Ein normaler IdTcpServer

beide greifen das Bild einer Webcam/Videokamera syncronisiert vom Video-Treiber ab.

Dann gibt es noch zwei Timer die in Abständen von 100 ms folgendes tun :
Der eine schickt geschriebene Chat-Texte, die erst in einer Stringlist zwischengespeichert werden, zu den Clients.
Der andere Timer stellt die Erhaltenen Chat-Texte dar.
Er erstellt davor einen lokalen HTML-File der dann vom TWebbrowser aufgerufen wird.

Hat irgentjemand eine Idee, durch welche Umstände plötzlich eine solch schlechte Performance verursacht werden könnte ?

Oder ist jemand im Decompilen und asm so gut, das er mir die UNterschiede von meiner alten und neuen App nennen kann ?

Danke schonmal im vorraus für jede Hilfe, weiß gerade wirklich nicht weiter

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