In C++ für Linux, ich versuche, jede Mikrosekunde/Nanosekunde etwas zu tun und verwende derzeit die NanoSleep-Funktion unten. Es funktioniert, aber wenn der Code millionenfach wiederholt wird, wird dies teuer. Ich suche nach einem hochauflösenden Timer, der ein sehr genaues Timing ermöglicht (die Anwendung ist Audio/Video). Irgendwelche Ideen?Auf der Suche nach einem hochauflösenden Timer
struct timespec req = {0};
req.tv_sec = 0;
req.tv_nsec = 1000000000L/value;
for(long i = 0; i < done; i++)
{
printf("Hello world");
nanosleep(&req, (struct timespec *)NULL);
}
Irgendwas stimmt nicht mit ''? –
chris
Wenn Ihre CPU einen 4-GHz-Takt hat, haben Sie 4 Taktzyklen in einer Nanosekunde. Sie können nicht jede Nanosekunde sehr viel tun, selbst bei dieser Geschwindigkeit. –
Von welcher Art von Linux und Prozessor reden wir? Für Nicht-Echtzeit-Systeme ist alles, was höher ist als die ms-Genauigkeit, schon ziemlich ambitioniert. Microsecond (nicht zu erwähnen, Nanosekunde) Genauigkeit ist etwas, was Sie nicht einmal auf den meisten Echtzeit-Systemen anstreben würden. – MikeMB