AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Threadproblem - sleep(1) braucht ca. 5 ms! Warum ?
Thema durchsuchen
Ansicht
Themen-Optionen

Threadproblem - sleep(1) braucht ca. 5 ms! Warum ?

Ein Thema von Andy386 · begonnen am 18. Jul 2008 · letzter Beitrag vom 19. Jul 2008
Antwort Antwort
Andy386

Registriert seit: 26. Mär 2008
55 Beiträge
 
#1

Re: Threadproblem - sleep(1) braucht ca. 5 ms! Warum ?

  Alt 18. Jul 2008, 11:03
@Lossy eX
Vielen Dank für die Vorschläge !
Der Anzeige-Thread ist halt nicht so wichtig, wenn ich den erhöhe, ist er gleich mit den anderen, d.h. wenn man viel anzeigen will (oder etwas neues), gehen die anderen mit in die Knie. Das ist aber nicht das gewünschte, da die Daten von der Karte extrem schnell kommen (und dann vom DatenHolenThread (nach Treiberaufruf) gleich gecacht werden). Der Auswerte kann auch noch langsamer sein, der hat an einigen Stellen bereits ein paar Sleeps bekommen, aber das nützt dem Ausgabethread nix, da der DatenHol-Problem-thread nie ein sleep hat...

wie macht man das mit den Events ? Bin noch Delphi-noob


Zitat von himitsu:
If you need a higher resolution timer, use a multimedia timer or a high-resolution timer.
Ah, da ist ja ein Ansatz...
Einen solchen timer habe ich schon gemacht/kopiert (um die genaue Threadlaufzeit zu ermitteln...), hab nicht dran gedacht, dass sleep den selben langsamen Timer nimmt wie now & Co.

Aber... habe ich dann viel gekonnt, wenn ich so was wie
Delphi-Quellcode:
jetzt:=now_genau;
while now_genau < (jetzt+1) do
     sysutils.sleep(0);
     //bzw.: Application.ProcessMessages;
nehme, ich mein, dann hat ja der Thread permanent zu tun mit Zeit berechnen...

Oder nützt es was, dass als niederprioren Thread zu machen, der einen interrupt wirft ? Kann man dass überhaupt in XP/Vista machen? Wenn ja, gibt's ein Tutorial für Anfänger dazu ?


[edit] oder vielleicht so:
Delphi-Quellcode:
while now_genau < (jetzt+1) do
begin
     sysutils.sleep(0);
     sysutils.sleep(0);
     sysutils.sleep(0);
     sysutils.sleep(0);
     sysutils.sleep(0);
     sysutils.sleep(0);
     sysutils.sleep(0);
     sysutils.sleep(0);
     sysutils.sleep(0);
     sysutils.sleep(0);
     sysutils.sleep(0);
     sysutils.sleep(0);
end;
Sorry, kenn den Befehlt für spoiler nicht !
[/edit]
  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 02:06 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-2025 by Thomas Breitkreuz