AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Beschränkung von GetTickCount für Timeout umgehen
Thema durchsuchen
Ansicht
Themen-Optionen

Beschränkung von GetTickCount für Timeout umgehen

Ein Thema von Vjay · begonnen am 26. Mär 2004 · letzter Beitrag vom 27. Apr 2004
Antwort Antwort
Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#1

Beschränkung von GetTickCount für Timeout umgehen

  Alt 26. Mär 2004, 09:12
Hi, Ihr habt da 2 schöne Beispiele in eurer Codelibrary. Wollte nur mal zeigen wie ich das gelöst habe. Performance-Counter sind mir zu langsam, da ich timeout-Funktionen auch in schnell rotierenden Schleifen nutze.

Delphi-Quellcode:
function initTimeOut(const msec: cardinal): cardinal;
var
 tickSave: cardinal;
begin
 if msec>0 then
 begin
  repeat // hängt am 50igsten tag evtl etwas, aber besser als absturz etc.
   tickSave:= getTickCount;
   result:= tickSave + msec;
   if result< tickSave then sleep(100);
  until result >= tickSave;
 end
 else result:= 0;
end;

function isTimeOut (const timeVal: cardinal): Boolean;
begin
 if timeVal=0 then result:= false
 else result:= (getTickCount> timeVal);
end;
Aufruf erfolgt dann so:

Delphi-Quellcode:
var
 timeOut: cardinal;
begin
 timeOut:= initTimeOut( 5000);
 repeat {doSomething} until isTimeOut( timeOut);
end;
So wird in der Schleife nur noch eine Vergleichsoperation durchgeführt = fix . Wenn man initTimeout mit 0 aufruft, geht die Funktion nie TimeOut.

Danke fürs lesen
Wer später bremst ist eher tot.
  Mit Zitat antworten Zitat
Assarbad
(Gast)

n/a Beiträge
 
#2

Re: Beschränkung von GetTickCount für Timeout umgehen

  Alt 27. Apr 2004, 14:02
Der helle Wahnsinn. Performancetechnisch absoluter Mist, aber ansonsten ...

"nur noch eine Vergleichsoperation durchgeführt = fix" halte ich für ein Gerücht, da dies im Endeffekt immer noch vom Compiler abhängt, solange es nicht in ASM implementiert wird.
  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 12:31 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