Präzise Gewinde Schlaf benötigt. Max 1ms Fehler

Habe ich rote Faden, der loop.
Ich brauche, dass die Schleife einmal ausgeführt werden alle 5ms (1ms-Fehler).
Ich weiß, dass die Funktion Sleep() ist nicht präzise.

Haben Sie irgendwelche Vorschläge?

Update.
Ich kann es nicht anderen Weg.
Am Ende der Schleife brauche ich irgendeine Art von Schlaf.
Ich möchte nicht, dass zu 100% die CPU geladen.

Dies ist ein XY-problem. Was auch immer Sie wirklich brauchen, zu tun, wahrscheinlich gibt es einen Weg, es zu tun. Aber dies ist nicht der Weg. (Ansonsten, wenn das wirklich so ist was Sie tun müssen, widmen einen Kern in diesem thread, und spin für 5ms. Das system kann nicht sinnvoll andere Arbeit verrichten, für die kleinen einen Zeitraum von Zeit.)
Hat die threading-system, das wirklich geben Ihnen jede Art von Zeit garantiert? In der Tat, nicht das OS läuft bist du auf einmal bieten? Sofern Sie ein Betriebssystem ausführen, die tatsächlich gibt Ihnen jede Art von Echtzeit-Garantien (WinCE vermutlich nicht, weiß nicht, über andere Versionen von Windows), dann haben Sie möglicherweise nicht immer in der Lage sein, zu garantieren, dass der thread oder Prozess-scheduler nicht nur unterbrechen, Ihrer Aufgabe und Verwendung die CPU-Zeit für etwas anderes.
"Genau um 1ms" ist ein bisschen ein oxymoron.
Der Titel gibt den Fehler von 1ms, und die Frage gibt die Dauer von 5ms. Das ist ein Fehler von 20%. In meinem Buch, das ist nicht sehr präzise.
Gut, zu gehen zu halten, für das wohl der cache und die übrigen in Zeit die Kontrolle über die Scheibe ist eine gute Idee, Stimme ich zu. Aber wenn die Zeit ankommt, ist es schließlich auch Fragen zu anderen threads. Also es ist zumindest nicht klar, ob die holding der Faden, der sich durch das drehen ist besser als Verzicht auf die Erinnerung des threads Zeitscheibe. Caches sind riesig in diesen Tagen und die Zeit einer kritischen Anwendung sind in der Regel nicht nehmen viel Speicher, besonders wenn sich wiederholende Dinge, die in einem 5-ms-Periode. Ich selbst schlage Sleep(0) zu verbessern timing. Und spinnging funktioniert nur zuverlässig bei hohen Priorität.

InformationsquelleAutor Hooch | 2012-11-15

Schreibe einen Kommentar