USleep() oder UDelay()

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Midimaster

Betreff: USleep() oder UDelay()

BeitragMi, Aug 04, 2021 19:13
Antworten mit Zitat
Benutzer-Profile anzeigen
ich würde gerne auf einem alten BlitzMax 1.50 die UDELAY() Function im Microsekundenbereich nutzen, wie sie unter BlitzMax NG zur Verfügung steht.

Hat da jemand schon mal was damit gemacht?

Inzwischen habe ich rausgefunden, das zwar die C-funktion usleep() angesprochen werden kann, aber die wartet egal welchen Wert man eingibt immer 2000 microsekunden (=2msec)

Dieser Test....

BlitzMax: [AUSKLAPPEN]
Extern "C"
Function usleep:Int(microsecs:Int)
EndExtern
Local start:Int = MilliSecs()
For Local i%=0 To 9
usleep(50)
Print "tick"
Next
Print "The End. Waiting took " + (MilliSecs()-start) + " milliseconds."


...gibt leider 20msc zurück. 10x aufgerufen a 2msec=20msec. Egal ob man die PRINT Zeile drin läßt oder nicht. Egal ob man 50 als Wert übergibt oder jede beliebige Zahl von 1 bis 1999. Immer dauert es 20msec.
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

coolo

BeitragSa, Aug 28, 2021 10:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe mit diesen Funktionen in BlitzMax noch nichts gemacht, aber rein aus konzeptioneller Sicht wird es in diesen Zeitintervallen schwierig sein genau zu stoppen, weil der Scheduler vom Betriebssystem defacto beliebig das Programm pausieren kann um andere Programme Priorität zu gewähren (es sei denn du lässt es auf einem Realtime Linux laufen, was ich eher bezweifle).

Du könntest vielleicht alternativ busy waiting versuchen, welches eine leere Schleife beinhaltet die manuell überprüft ob die gewünschte Zeit vergangen ist. Das ist halt resourcenintensiver.

Ansonsten, ich weiß nicht wie BlitzMax das handhabt, aber usleep ist normalerweise ein Unsigned Int.



LG,
coolo
http://programming-with-design.at/ <-- Der Preis ist heiß!
That's no bug, that's my project!
"Eigenzitate sind nur was für Deppen" -Eigenzitat

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group