AGB  ·  Datenschutz  ·  Impressum  







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

delay bzw. sleep

Ein Thema von stoxx · begonnen am 21. Nov 2008 · letzter Beitrag vom 22. Nov 2008
Antwort Antwort
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#1

delay bzw. sleep

  Alt 21. Nov 2008, 22:11
die Version von Luckie ist nicht ganz perfekt, bzw. geht die CPU Last dann auf 100 Prozent
http://www.delphipraxis.net/viewtopic.php?t=131

und diese Funktion von negaH hat ein paar schwer zu findende Macken, in Kombination mit anderen Threads und Sockets ...
http://www.delphipraxis.net/internal...elay+revisited



ab und an ... , wenn man es nicht vermeiden kann, mit sleep zu arbeiten, verwenden wir jetzt wieder die alte Version

Delphi-Quellcode:
procedure SleepX(Milliseconds : Integer);
var
  TC: DWORD;
begin
  TC := GetTickCount;
  repeat
    if application.Terminated then
       exit;
    Application.ProcessMessages;
    sleep(1);
  until ((GetTickCount-TC) > Milliseconds);
end;
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Benutzerbild von SubData
SubData

Registriert seit: 14. Sep 2004
Ort: Stuhr
1.078 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: delay bzw. sleep

  Alt 21. Nov 2008, 22:18
Ich verwende die Version von Hagen in einer Server-Anwendung und konnte bisher kein fehlerhaftes Verhalten feststellen...
Was genau ist denn daran fehlerhaft?
Ronny
/(bb|[^b]{2})/
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

Re: delay bzw. sleep

  Alt 21. Nov 2008, 22:21
hi,

Delphi-Quellcode:
procedure SleepX(Milliseconds : Integer);
var
  TC: DWORD;
begin
  TC := GetTickCount;
  repeat
    if application.Terminated then
       exit;
    Application.ProcessMessages; // <--- non-thread
    sleep(1);
  until ((GetTickCount-TC) > Milliseconds);
end;
Kannst du mir mal erklären wofür du in einer Non-Thread-Umgebung ein sleep brauchst?

cu

Oliver
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#4

Re: delay bzw. sleep

  Alt 21. Nov 2008, 22:25
Damit die CPU-Auslastung nicht zu hoch wird, nehme ich an.
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#5

Re: delay bzw. sleep

  Alt 21. Nov 2008, 22:29
Zitat von SubData:
Ich verwende die Version von Hagen in einer Server-Anwendung und konnte bisher kein fehlerhaftes Verhalten feststellen...
Was genau ist denn daran fehlerhaft?
Gute Frage, wir haben das nicht weiter untersucht, obs am Socket oder an den Threads lag, bzw. war QS_ALLINPUT wohl nicht ganz ausreichend, wenn aus einem Thread Events synchroniziert per Synchronize geschickt wurden. Ich bin mir jetzt nicht sicher, da müsste ich nochmal drüber nachdenken und debuggen, ob MsgWaitForMultipleObjects zu wenig oder zuviel abgebrochen hat.

Zumindest wurde Code, der eigentlich überhaupt nicht parallel hätte ausgeführt werden können, dann auch einmal doch doppelt ausgeführt. Der Quelltext benötigt eine sauberes warten der Aktionen in Joblisten, so dass wir es nicht gemerkt haben.
Wir haben aber ein paar Showmessages als mißbrauchte Asserts in unserem Quelltext, die in Fehlerfällen auf einmal doppelt und dreifach hintereinander erschienen, obwohl die erste noch gar nicht bestätigt wurde ...
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#6

Re: delay bzw. sleep

  Alt 21. Nov 2008, 22:30
Zitat von NamenLozer:
Damit die CPU-Auslastung nicht zu hoch wird, nehme ich an.
korrekt
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Benutzerbild von SubData
SubData

Registriert seit: 14. Sep 2004
Ort: Stuhr
1.078 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: delay bzw. sleep

  Alt 21. Nov 2008, 22:30
Ahh... So ist das
Dafür ist die Funktion ja genau da, dass sie bei einem Event abbricht
Ronny
/(bb|[^b]{2})/
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#8

Re: delay bzw. sleep

  Alt 21. Nov 2008, 22:32
Zitat von SubData:
Ahh... So ist das
Dafür ist die Funktion ja genau da, dass sie bei einem Event abbricht
ja, aber blöderweise darf die wohl jeder Thread abbrechen ..
und synchronizierte Aufrufe von Thread funken dann auf einmal unsynchroniziert in den Mainthread rein ..
irgendwie so muss es gewesen sein
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: delay bzw. sleep

  Alt 22. Nov 2008, 01:54
Ich verstehe, ehrlich gesagt, immer noch nicht, warum du eine Sleep-Funktion brauchst, wenn du Threads verwendest.

Und das Argument mit der CPU Auslastung ist Müll. So lange der Thread Rechenzeit abgibt, wenn andere Ressourcen sie brauchen ist das doch in Ordnung. Und das sollte der Fall sein, wenn du die Priorität nicht hochgesetzt hast. Weil dafür habe ich die CPU gekauft, zum Rechnen und nicht um ungenutzt Strom zu verbrauchen. Ich kaufe mir doch auch kein 300 PS Auto, um dann im ersten Gang über die Autobahn zu kriechen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#10

Re: delay bzw. sleep

  Alt 22. Nov 2008, 07:00
Hi Luckie .. glückwunsch erstmal

das sleepx sollte nur eine Info sein, wir haben nun auch umgestellt. Es gab gewissen Momente, wo man mit einem Fremdserver (über Socket) nicht kommunizieren durfte, weil sonst in der Kommunikation Fehler entstanden waren.
Wir haben mittlerweile komplett umgestellt auf Joblisten,... wenn also für einen kurzen Moment "besetzt" ist, wird einfach bei der Freigabe die Joblist abgearbeitet.
Somit erübrigt sich sleepx .. da hast Du schon Recht ..


Zitat:
Ich kaufe mir doch auch kein 300 PS Auto, um dann im ersten Gang über die Autobahn zu kriechen
Also ich kaufe mir ein 300 PS Auto um vor allen Dingen in einer ruhigen Kulisse von A nach B zu fahren Und um Leistung zu haben, wenn ich sie brauche.
Natürlich darf man mit schnellen Autos auch 50 in der Stadt fahren, auch wenn der Motor da nicht ausgelastet ist


.
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  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 00:04 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