Как реализовать долгосрочную синхронизацию с высоким разрешением в Windows с помощью C ++?

Мне нужно получать точные временные метки каждые пару мс (20, 30, 40 мс) в течение длительного периода времени (пара часов). Функция, в которой берется метка времени, вызывается сторонней библиотекой как обратный вызов.

Используя GetSystemTime () , можно получить правильную системную метку времени, но только с точностью до миллисекунд, что для меня недостаточно. Использование QueryPerformanceTimer () дает более точные метки времени, но не синхронизируется с системной меткой времени в течение длительного периода времени (см. http://msdn.microsoft.com/en-us/magazine/cc163996 .aspx ).

Решение, представленное на сайте, указанном выше, каким-то образом работает только на старых компьютерах, оно зависает во время синхронизации, когда я пытаюсь использовать его с новыми компьютерами.

Мне кажется, что boost также работает только с точностью до миллисекунд. Если возможно, я бы не хотел использовать внешние библиотеки, но если нет другого выбора, я буду использовать его.

Есть предложения?

Спасибо.

5
задан fdlm 28 September 2011 в 12:25
поделиться