мне нужны часы реального времени с точностью до миллисекунд? - PullRequest
0 голосов
/ 26 мая 2010

Мне нужны часы реального времени с точностью до миллисекунд?

Я работаю на Windows, библиотека Windows Base также приемлема заранее.

Ответы [ 3 ]

1 голос
/ 26 мая 2010

В ANSI C нельзя быть уверенным, что базовая система обеспечивает точность в миллисекундах. Однако для достижения максимальной детализации вы можете использовать функцию clock(), которая возвращает время с момента запуска процесса в тиках, где продолжительность тика определяется как 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;

Из документации GNU .

0 голосов
/ 26 мая 2010

Вы не можете сделать это с переносимым кодом.

Поскольку вы используете Windows, вы должны знать, что Windows не является системой реального времени, поэтому ничего, что вы делаете, действительно не будет точным. Тем не менее, вы можете начать с timeBeginPeriod(1);, чтобы установить разрешение мультимедийного таймера на 1 миллисекунду. Затем вы можете позвонить timeGetTime(), чтобы получить текущее время с разрешением 1 мс. Когда вы закончите синхронизацию, вы звоните timeEndPeriod(1), чтобы установить для таймера значение по умолчанию.

0 голосов
/ 26 мая 2010

ANSI C clock () даст вам точность миллисекунд, но не точность, поскольку это зависит от системных часов окна, которые имеют точность до 50 мсек или где-то в этом диапазоне.Если вам нужно что-то получше, вы можете использовать Windows API QueryPerformanceCounter , который также имеет свои предостережения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...