【问题标题】:How to implement usermode timer in C?如何在 C 中实现用户模式计时器?
【发布时间】:2009-03-19 11:02:36
【问题描述】:

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

【问题讨论】:

  • 不使用单个库函数?还是不使用特定功能?我不明白如何在没有 lib 调用的情况下获得系统时间。
  • 我需要知道如何实现一个简单的时间。当然,也可以依赖平台 API。不使用它怎么可能实现呢?
  • 在 windows 中 SetTimer 应该足够了。如果您不能依赖平台 API,则可以自己重新编程时钟芯片 (i8042)。

标签: c++ c timer


【解决方案1】:

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

假设您需要超过秒精度,包装/使用 @987654321@ 指令很流行。但是你也可以只使用 Win32 API,@987654322@ 被广泛用于此。

【讨论】:

    【解决方案2】:

    许多 API,如 Intel 的线程构建块 (http://threadingbuildingblocks.org)、OpenMP (http://openmp.org)、SDL (http://libsdl.org) 或 SFML (http://sfml-dev.org),我认为 OpenGL (http://opengl.org) 也实现了计时器或定时器的包装器。

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

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

    【讨论】:

      【解决方案3】:

      从互联网时间服务获取原子钟时间。

      否则,您将始终处理一些可以与 BIOS 对话的库函数,这是使 Quartz 的滴答声对操作系统可见的部分。

      【讨论】:

        猜你喜欢
        • 2020-08-13
        • 1970-01-01
        • 2014-06-06
        • 1970-01-01
        • 1970-01-01
        • 2014-06-28
        • 2013-03-14
        • 2012-05-30
        • 1970-01-01
        相关资源
        最近更新 更多