AGB  ·  Datenschutz  ·  Impressum  







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

100 % CPU Last durch Thread

Ein Thema von lightline · begonnen am 6. Sep 2004 · letzter Beitrag vom 16. Mär 2014
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Luckie
Luckie

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

AW: 100 % CPU Last durch Thread

  Alt 16. Mär 2014, 17:45
Warum innerhalb eines Threads Application.ProcessMessages; ?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
d7user1
(Gast)

n/a Beiträge
 
#12

AW: 100 % CPU Last durch Thread

  Alt 16. Mär 2014, 18:11
ohne Application.ProcessMessages in der Sleep-Methode blockt meine anwendung. warum weiß ich nicht. <- quatsch.

habe die procedure nun so geändert dass über eine boolsche variable geprüft wird ob man ProcessMessages braucht oder nicht.
wenn der aufruf aus einem thread kommt > nein, sonst > ja.

bisher gibt es aber keinen unterschied bezüglich cpu last.

Geändert von d7user1 (16. Mär 2014 um 18:21 Uhr)
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#13

AW: 100 % CPU Last durch Thread

  Alt 16. Mär 2014, 18:29
ich pausiere das mit einem while pausiert do LongDelay(25); .
die prozessorauslastung bleibt aber konstant auf dem vorherigen wert und sinkt nicht auf 0.
Was spricht denn dagegen einfach ein Sleep(25) zu verwenden? In einem Thread, der momentan mangels Aufgabe in einem 'Pause' Zustand ist, wird ein Sleep(25) keine negativen Auswirkungen auf die Programmausführung haben, auch nicht für den VCL Thread.
Michael Justin
  Mit Zitat antworten Zitat
d7user1
(Gast)

n/a Beiträge
 
#14

AW: 100 % CPU Last durch Thread

  Alt 16. Mär 2014, 18:36
also ein sleep(25) funktioniert im thread. aber im vcl-thread blockt es mir das ganze programm.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#15

AW: 100 % CPU Last durch Thread

  Alt 16. Mär 2014, 19:00
Wenn du eine Single Core CPU hast und dein Thread viel zu tun hat, spricht aber auch gar nichts dagegen, dass der 100% CPU Last erzeugt. Warum sollte die Aufgabe des Threads denn auch unnötig lange brauchen?

Im Process Explorer kannst du auch schauen welcher Thread überhaupt die Auslastung verursacht.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#16

AW: 100 % CPU Last durch Thread

  Alt 16. Mär 2014, 19:36
also ein sleep(25) funktioniert im thread. aber im vcl-thread blockt es mir das ganze programm.
Sleep im VCL-Thread blockiert natürlich das Programm. Aber worauf bzw. warum soll denn im VCL-Thread 25 Millisekunden gewartet werden? Wie sieht die Warte-Funktion (LongDelay) jetzt aus?
Michael Justin

Geändert von mjustin (16. Mär 2014 um 19:38 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#17

AW: 100 % CPU Last durch Thread

  Alt 16. Mär 2014, 20:28
Wenn im Hauptthread nichts gemacht wird (also keine Messages anstehen),
dann ist diese Schleife ständig nur mit Nachsehen beschäftigt, ob es jetzt was gibt und lastet dann mit Nichts den Kern/Thread zu 100% aus.

PS: Selbst ein Sleep(0) kann etwas ausrichten.
Jeder Thread bekommt ja bom Sheduler immer paar Millisekunden zum Arbeiten, bis die anderen Threads auch mal etwas Zeit bekommen. Und Sleep(0) gibt die Restzeit sofort ans Windows zurück.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (16. Mär 2014 um 20:30 Uhr)
  Mit Zitat antworten Zitat
OlafSt

Registriert seit: 2. Mär 2007
Ort: Hamburg
284 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#18

AW: 100 % CPU Last durch Thread

  Alt 16. Mär 2014, 22:11
Wenn ich mir die Execute-Methode da ansehe (von den bösen Zugriffen auf die VCL abgesehen), wundert mich da nichts.

Würde man die Execute-Methode in den Mainthread verlagern und so laufen lassen, wäre die CPU-Last 100%. Warum sollte das also in einem Thread anders sein ? Es ist ein Trugschluß zu glauben, man verlagere seinen Programmcode einfach in einen Thread und *poff*, geht meine CPU-Last auf Null

Ein volles Rohr in einer Endlosschleife laufendes Programm belegt eben auch die komplette Zeit die CPU - egal ob nun im Mainthread oder als Nebenthread. Erst, wenn Pausen ins Spiel kommen (zum Beispiel "nur alle 250ms eine Runde durchs TreeView"), geht die Last auch zurück.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#19

AW: 100 % CPU Last durch Thread

  Alt 16. Mär 2014, 22:21
Wenn ich mir die Execute-Methode da ansehe
Nicht verwechseln. d7user1 ist nicht der Fragesteller von damals.
Aber solche Missverständnisse sind vorprogrammiert, wenn man einen alten Thread kapert statt einen eigenen aufzumachen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 19:09 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