Sleep()无法准确表示时间
Sleep() does not give accurate representation of time
我创建了一个简单的定时器程序,如下所示。
#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;
)时,与实时相比没有太多变化。然而,我创建的倒计时越精确,它就离实时越远。
- 为什么会这样
- 如果你知道的话,周围有工作吗?不过没什么大不了的,因为
Clock()
运行良好。这主要是一个好奇心驱动的问题
循环中还会发生其他事情,这需要时间。此外,睡眠至少需要一段时间,但可能需要更长的时间。
使用睡眠,但通过使用时钟来调整时间,以将这些因素考虑在内。
这是因为决定何时唤醒进程的系统时钟正处于两个周期之间。
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- 如何计算Big-O表示法中的平均渐近运行时间
- 曼德布洛特集合在大O表示法方面的时间复杂度
- 生成包含分数和时区的完整 iso 日期时间表示字符串
- 在 C++11 中表示日内时间 HH:MM:SS 的最佳方法是什么?
- 以C++/提升表示 ISO 8601 持续时间,具体取决于当前日期
- 用O(1)表示法求一系列数字的平均值——常数时间
- 从SYSTEMTIME到time_t的转换以UTC/GMT表示时间
- 是否有一个平台不将 std::time_t 表示为 unix 时间
- 如何在UML活动图中表示编译时间条件
- 表示时间_t之间的差异
- Sleep()无法准确表示时间
- 用大0符号表示函数的时间复杂度
- 用c++表示时间
- Very Sleepy分析器中花括号附近的时间测量值表示什么?
- boost:: posix_time.如何在同一个应用程序中表示微秒和纳秒日期时间
- 反向向量的时间复杂度(以大O表示)
- 目标 c - 如何在 c++ 语言 / getdate() 中定义表示时间值的值
- 接受std::chrono::任何表示/周期的持续时间
- 以复数表示的实际经过时间