Здравствуйте, гость ( Вход | Регистрация )
Iron Bug | Дата 24.3.2011, 8:07 |
Сегодня заговорили про таймеры на лине, и я вспомнила про один глючок таймеров на венде. Глючок противный, может, кому понадобится инфа про него. Конечно, на новых чипсетах этот глюк наверняка не присутствует, но знать полезно, а то напорешься - хрен догадаешься, что и почему. Суть в том, что на некоторых материнках из-за проблем с южным мостом при нагрузке на PCI имеют место внезапные скачки счётчика QueryPerformanceCounter вперёд аж на несколько секунд. Так что нужно делать доп. проверку, сравнивая ещё и секундные показания с других таймеров. Вот инфа от мелкософта, там и пример кода, как дополнительную проверку делать, и список глюкавых мостов: http://support.microsoft.com/kb/274323 |
|
Litkevich Yuriy | Дата 25.9.2010, 17:27 |
не пробовал? неа, меня полностью устроило решение предложенное BRE |
|
DEADHUNT | Дата 25.9.2010, 15:14 |
не пробовал? |
|
Litkevich Yuriy | Дата 24.9.2010, 20:33 |
собственно, в результате использовал это: Посмотри на файл src/testlib/3rdparty/cycle_p.h |
|
Iron Bug | Дата 22.12.2009, 10:03 |
убираю копию... чота сеть глюканула - два раза послалось. сорри. | |
Iron Bug | Дата 22.12.2009, 10:03 |
полгода назад тот же вопрос меня мучил. нарыла в какой-то статье реализацию счётчика, маленько переделала под свои нужны. примерно вот так вышло (выкусываю куски кода, ибо весь он сильно объёмный и там не просто счётчики, а отдельный поток с организацией дилеев реализован для моих хардварных нужд):
детали реализации счётчика под венду: это файл для счётчика под венду (идея в замерах по счётчику и периодической синхронизации его с системным временем для устранения набежавшей погрешности). взято хоть убей не помню откуда, возможно, что-то я ещё переделывала потом - уже плохо помню чего там было, но код работает:
P.S. я тут быстро из кода навыдирала кусочков и комменты маленько добавила, могла чего-нить забыть. но в общем, я думаю, идея понятна. |
|
Litkevich Yuriy | Дата 21.12.2009, 2:42 |
GetTickCount ы? Цитата The return value is the number of milliseconds that have elapsed since the system was started. Там же нашёл, что-то похожее на то, что мне нужно: QueryPerformanceCounter И ещё QueryUnbiasedInterruptTime про который написано: Цитата Points to a variable to receive the unbiased interrupt-time count in system time units of 100 nanoseconds. Посмотри на файл src/testlib/3rdparty/cycle_p.h а вот это походу в яблочко. Буду штудировать |
|
trdm | Дата 21.12.2009, 2:29 |
потому тики будут точными на каждые 100 мс для системного (низкоуровнего) счётчика, тики будут соответствовать точности кварцевого резонатора (с соответствующим коэфф. деления).Меня не интересует ширпотребный таймер/часы. именно счётчик тиков GetTickCount ы? +
|
|
Litkevich Yuriy | Дата 20.12.2009, 23:50 |
потому тики будут точными на каждые 100 мс для системного (низкоуровнего) счётчика, тики будут соответствовать точности кварцевого резонатора (с соответствующим коэфф. деления).Меня не интересует ширпотребный таймер/часы. именно счётчик тиков |
|
ViGOur | Дата 20.12.2009, 23:03 |
Но так же нужно не забывать, что мы работаем не в ОС реального времени, потому тики будут точными на каждые 100 мс, на меньший промежуток времени нет. Ребята помнится уже как-то (достаточно давно) проверяли это дело на другом форуме. И 100 мс справедливо помнится для винды, для никсов не помню проверяли или нет. |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 29.3.2024, 9:36 |