/ / Potrzebuję w czasie rzeczywistym zegara czasu rzeczywistego, który zapewnia dokładność do milisekund? - c

Potrzebuję zegara czasu rzeczywistego w ansi c, który zapewnia dokładność do milisekund? - c

Potrzebuję w czasie rzeczywistym zegara czasu rzeczywistego, który zapewnia dokładność do milisekund?

Pracuję na systemie Windows, lib lib systemu Windows jest również akceptowalny z góry dzięki.

Odpowiedzi:

0 dla odpowiedzi № 1

Nie można tego zrobić za pomocą przenośnego kodu.

Ponieważ używasz systemu Windows, musisz zacząć od świadomości, że system Windows nie jest systemem czasu rzeczywistego, więc nic, co robisz, nie jest tak naprawdę gwarantowane. To powiedziawszy, możesz zacząć timeBeginPeriod(1); ustawić rozdzielczość timera multimediów na 1 milisekundę. Możesz wtedy zadzwonić timeGetTime() aby pobrać bieżący czas z rozdzielczością 1 ms. Kiedy skończysz mierzyć czas, dzwonisz timeEndPeriod(1) aby przywrócić domyślną rozdzielczość timera.


1 dla odpowiedzi nr 2

W ANSI C nie można mieć pewności, że system bazowy zapewnia dokładność w milisekundach. Jednak w celu uzyskania maksymalnej szczegółowości możesz użyć clock() funkcja, która zwraca czas od uruchomienia procesu w tikach, w których czas trwania tiku jest określony przez CLOCKS_PER_SEC:

#include <time.h>

double elapsed; // in milliseconds
clock_t start, end;

start = clock();

/* do some work */

end = clock();
elapsed = ((double) (end - start) * 1000) / CLOCKS_PER_SEC;

Z GNU dokumentacja.


0 dla odpowiedzi № 3

Otrzymasz zegar ANSI C () precyzja milisekund, ale nie dokładność, ponieważ tozależy od zegara systemowego okna, który ma dokładność do 50 ms lub mniej więcej w tym zakresie. Jeśli potrzebujesz czegoś nieco lepszego, możesz użyć Windows API QueryPerformanceCounter, który ma również swoje własne zastrzeżenia.