Я видел это поведение в прошлом при совершении вызовов Ajax. Я полагаю, что это связано с тем, что браузеры являются только единственными, распараллелил, поэтому когда на звонок Ajax отвечают, поток работает над вызовом, таким образом, последовательно анимированный GIF должен остановиться на мгновение.
Для C ++ 03 :
Boost.Timer может работать, но это зависит от функции C clock
и поэтому может не иметь достаточно хорошее разрешение для вас.
Boost.Date_Time включает в себя ptime
класс , который ранее был рекомендован в Stack Overflow. См. Его документацию по microsec_clock :: local_time
и microsec_clock :: universal_time
, но обратите внимание на его оговорку, что «системы Win32 часто не достигают микросекундного разрешения с помощью этого API»
STLsoft предоставляет, помимо прочего, тонкие кроссплатформенные (Windows и Linux / Unix) оболочки C ++ вокруг API-интерфейсов, специфичных для ОС. В его библиотеке производительности есть несколько классов, которые сделают то, что вам нужно. (Чтобы сделать его кроссплатформенным,
Первый ответ на вопросы библиотеки C ++ - обычно BOOST: http://www.boost.org/doc/libs/1_40_0/libs/timer/timer.htm . Это делает то, что вы хотите? Вероятно, нет, но это начало.
Проблема в том, что вы хотите портативность, а функции таймера не универсальны в ОС.
Я не уверен в ваших требованиях. Если вы хотите рассчитать временной интервал, см. Тему ниже
Я видел, как это реализовано несколько раз как с закрытым исходным кодом собственные решения .... все они использовали #ifdef
решения для нативных таймеров высокого разрешения Windows, с одной стороны, и таймеры ядра Linux, использующие struct timeval
(см. man timeradd
) с другой стороны.
Это не лучший ответ, но вот несколько разговоров на сайте разработки игр о таймерах с высоким разрешением:
В библиотеке ACE также есть портативные таймеры высокого разрешения.
Doxygen для таймера высокого разрешения:
http://www.dre.vanderbilt.edu/Doxygen/5.7.2/ html / ace / a00244.html
Библиотека с открытым исходным кодом StlSoft предоставляет весьма хороший таймер как на платформах Windows, так и на Linux. Если вы хотите реализовать его самостоятельно, просто посмотрите их исходники.
I highly recommend boost::posix_time library for that. It supports timers in various resolutions down to microseconds I believe
Библиотеки STLSoft Мэтью Уилсона предоставляют несколько типов таймеров с соответствующими интерфейсы, чтобы вы могли подключать и работать. Среди предложений есть таймеры с низкой стоимостью, но с низким разрешением, и таймеры с высоким разрешением, но с высокой стоимостью. Существуют также устройства для измерения времени перед запуском потока и для измерения времени каждого процесса, а также все, что измеряет прошедшее время.
Это исчерпывающая статья, освещающая это в статье доктора Добба несколько лет назад. , хотя он охватывает только те, что определены в подпроекте WinSTL.
STLSoft имеет библиотеку производительности , которая включает набор классов таймера, некоторые из которых работают как для UNIX, так и для Windows.