Сходу извиняюсь, что не смогу полноценно участвовать в этой теме - весь
в комбинезоне и пыли в госпитале и в гипсах.
Поэтому жду лишь рассуждений, соображений... ну, типа, вброс на вентилятор... звыняйте за это, други.
Тема мутная. Это видно как M$ ретуширует ее десятилетиями ужЕ.
Реализовано два таймера:
1. QueryPerformanceCounter
2. GetSystemTimeAsFileTime
Первый - для собственно взятия отсчетов времени. Второй - для привязки первого к системному времени.
Как без использования внешнего эталона первого стратума (да любого!)
обеспечить достоверность первого таймера? Через периодически вносимую в БД поправку на ветер.
Нужны именно наносеки. Если бы микро, хотя бы, то насрать - усушка, утруска...
Кто дрифтит относительно кого?! Чей кварц надежнее? Как это попытаться хотя бы субъективно оценить - кто плывет относительно кого? Дрифт в районе 3 сек в сутки и сильно зависит от железа.
Даже если есть способ ответить на вопрос выше -
Чей кварц надежнее? - то, как это привязать к конкретному (произвольному) железу?
Задача усложняется тем, что единственная пауза в течение суток лишь в районе 21-23. Т.е. переход через нули (читай - через дату) неизбежен.
Задача упрощается тем, что на пояса можно забить - все в классическом GMT/UTC.
Я понимэ, что вопрос этот более в сторону геймерских форумов, но туда без знания Си и Асм лучше не входи...
Но и там в первую очередь наклонят в сторону kernel-mode API KeQueryPerformanceCounter, или, что еще хлеще, в сторону RDTSC или RDTSCP...
--------------------------
Тут многие в бой рвутся с невостребованным своим знанием...
зей ар велкам ту :)
.
.
http://www.sql.ru/forum/1238427/drift-taymerov