如何在C中实现用户模式定时器?

时间:2009-03-19 11:02:36

标签: c++ c timer

如何在不使用库函数的情况下在Windows中实现自己的计时器功能?我们应该处理汇编语言指令吗?

3 个答案:

答案 0 :(得分:4)

这取决于您需要的精度和分辨率。

假设您需要超过第二个精度,则包装/使用RDTSC指令很受欢迎。但您也可以使用Win32 API,QueryPerformanceCounter()广泛用于此。

答案 1 :(得分:0)

许多API,如英特尔的线程构建模块(http://threadingbuildingblocks.org),OpenMP(http://openmp.org),SDL(http://libsdl.org)或SFML(http://sfml-dev.org),我认为也是OpenGL (http://opengl.org)在计时器周围实现计时器或包装器。

说“不使用库函数”有点模糊:具体是哪个库?最后,您必须使用一些库函数或内联汇编,因为C ++在核心语言中没有时序功能。并且没有任何定时器处理器或其他任何形式的定时硬件(*),没有办法分辨时间,而不是模糊,不完全。

(*)包括互联网时间提供商。

答案 2 :(得分:0)

从互联网时间服务获取atomclock时间。

否则你将始终处理某种类型的库函数,您可以使用这些函数与BIOS进行通信,这是使Quartz中的tick-tock在操作系统中可见的部分。