c++ - Sleep() 没有给出准确的时间表示

标签 c++

我创建了一个简单的定时器程序如下。

#include <conio.h>
#include <windows.h>
#include <iostream>
int main()
{
    float counter = 0;
    float time = 0;
    std::cin >> time;
    while (true){
        system("cls");
        std::cout << time - counter;
        Sleep(10);
        counter+= .01;
        if (time - counter < 0) break;
    }
}

如您所见,我没有使用 Clock(),而是使用了 Sleep()。当我有一个不太精确的计数器 (Sleep(1000); counter += 1;) 时,与实时的差异不大(如果有的话)。然而,我创建的倒计时越精确,它就越远离实时。

  1. 为什么会这样?
  2. 如果您知道是否有解决方法?不过没什么大不了的,因为 Clock() 工作正常。这主要是一个好奇心驱动的问题。

最佳答案

其他事情在循环中发生——这需要时间。 sleep 也至少需要那段时间 - 但可能需要更多时间。

使用 sleep 但使用时钟调整时间以考虑这些因素。

关于c++ - Sleep() 没有给出准确的时间表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34418256/

相关文章:

c++ - 我如何找出我的 3D 容器的元素是什么类型?

c++ - 执行某些代码后可以显式调用构造函数吗?

c++ - Opencv:尝试更改图像的背景

c++ - 如何在用Boost MSM编写的状态机中直接达到任何状态

c++ - 如何将非可变值传递给 fmt::format?

c++ - 如何让我自己的 C++ 编译器理解模板、嵌套类等 C++ 的强大功能?

c# - 从 C++ 库中的函数返回数组到 C# 程序

c++ - CUDA 和 C++ 中的名称重整

c++ - SmartPTR实现heap->isValid断言

c++ - 在 C++ 中对整数数组进行线性搜索时,SSE 比较无法按预期工作