Forum: PC-Programmierung Wait in VB.Net diesmal aber mal Mikrosekunden GENAU!!


von Suchender (Gast)


Lesenswert?

Hallo Leute,

Suche ein Kommando in VB.Net , mit dem ich Mikrosekunden warten kann.
Millisekunden sind mir schon klar. Würde mit Timespan gehen.

Suche aber MIKROSEKUNDEN !!!

Nun gibt es ja noch:
System.Threading.Thread.SpinWait(1000)

Aber wieviel ist ein Tick? Auch 100nS ??

von Εrnst B. (ernst)


Lesenswert?

Dir ist klar das unter VB.NET bzw. Windows generell vom Userspace aus 
garkeine Möglichkeit besteht, genau zu warten?
Das Beste was du erreichen kannst, ist mindestens XXX µs zu warten, 
eben mit der Einschränkung das es auch mal länger dauert.

Zur Frage: Der Parameter bei SpinWait gibt nur eine Anzahl an 
Schleifendurchläufen an. Wie lange ein Durchlauf dauert ist nicht 
definiert, hängt z.B. von deiner CPU-Frequenz ab. Und kann deswegen auch 
ständig schwanken, weil neuere CPUs die Frequenz zum Stromsparen 
variieren.

von KptnCrunch (Gast)


Lesenswert?

Über Schleife Ticks abfragen. Zwar nich 100% Genauigkeit aber sollte 
ausreichen.

DateTime.Ticks

von Oliver R. (superberti)


Lesenswert?

Hi,

was hast Du denn vor? Am besten, Du überdenkst Dein Design noch 
einmal...
Ansonsten liefern die Win32-Funktionen QueryPerformanceCounter und 
QueryPerformanceFrequency die genauesten Ergebnissse. Ein busy-wait mit 
diesen Funktionen dürfte wohl am genauesten sein, wobei jeder 
dazwischengekommene Task-Switch die ganze Aktion hinfällig werden läßt.
Für solch kleine Wartezeiten ist Windows nix...

Gruß, Oliver

von Purzel H. (hacky)


Lesenswert?

Lagere das Ganze auf einen Controller aus. Im PC wird das nichts.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.