![]() |
delay bzw. sleep
die Version von Luckie ist nicht ganz perfekt, bzw. geht die CPU Last dann auf 100 Prozent
![]() und diese Funktion von negaH hat ein paar schwer zu findende Macken, in Kombination mit anderen Threads und Sockets ... ![]() 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; |
Re: delay bzw. sleep
Ich verwende die Version von Hagen in einer Server-Anwendung und konnte bisher kein fehlerhaftes Verhalten feststellen...
Was genau ist denn daran fehlerhaft? |
Re: delay bzw. sleep
hi,
Delphi-Quellcode:
Kannst du mir mal erklären wofür du in einer Non-Thread-Umgebung ein sleep brauchst? :gruebel:
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; cu Oliver |
Re: delay bzw. sleep
Damit die CPU-Auslastung nicht zu hoch wird, nehme ich an.
|
Re: delay bzw. sleep
Zitat:
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 ... |
Re: delay bzw. sleep
Zitat:
|
Re: delay bzw. sleep
Ahh... So ist das :)
Dafür ist die Funktion ja genau da, dass sie bei einem Event abbricht ;-) |
Re: delay bzw. sleep
Zitat:
und synchronizierte Aufrufe von Thread funken dann auf einmal unsynchroniziert in den Mainthread rein .. irgendwie so muss es gewesen sein :-) |
Re: delay bzw. sleep
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. |
Re: delay bzw. sleep
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:
Natürlich darf man mit schnellen Autos auch 50 in der Stadt fahren, auch wenn der Motor da nicht ausgelastet ist ;-) . |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:57 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 by Thomas Breitkreuz