获取错误的毫秒延迟值

2024-03-22

我试图获得 1 毫秒的延迟,但延迟增加了 15 倍。我也尝试过使用 WindowsSleep(1)函数也给了我相同的结果。

为什么我没有得到精确的毫秒延迟?

它的工作延迟为 1 秒。

#include <iostream>
#include <Windows.h>
#include <thread>
#include <chrono>

void counter1();

auto main() -> int
{

    std::thread p(&counter1);
    p.join();
    return 0;
}

void counter1()
{
    int nStep = 0;
    const int STEP = 1000;
    auto start = std::chrono::high_resolution_clock::now();
    for (;;)
    {
        ++nStep; // incrementing every millisecond
        std::this_thread::sleep_for(std::chrono::milliseconds(1));
        if (nStep == STEP) {  // compares at second
            auto duration = std::chrono::high_resolution_clock::now() - start;
            std::cout << "counter took " <<
                std::chrono::duration_cast<std::chrono::seconds>(duration).count()
                << "seconds \n";
            start = std::chrono::high_resolution_clock::now();
            nStep = 0;
        }
    }
}

该程序的输出:https://i.stack.imgur.com/AVZDV.png https://i.stack.imgur.com/AVZDV.png


你没有得到预期的结果,因为你的期望落空了。sleep_for不是等待确切的时间。从参考参数 https://en.cppreference.com/w/cpp/thread/sleep_for:

阻塞当前线程的执行at least指定的 睡眠持续时间。

这个功能阻塞时间可能超过 sleep_duration由于 调度或资源争用延迟。

该标准建议使用稳定的时钟来测量 期间。如果实现使用系统时钟,则等待 时间也可能对时钟调整敏感。

精确的计时通常需要专用硬件。对于台式电脑来说 1 毫秒的预期是相当乐观的。

最重要的是,您测量的时间不仅来自sleep_for.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取错误的毫秒延迟值 的相关文章

  • 在 WCF 上重用我的 PagedList 对象

    问题 我有一个自定义集合PagedList
  • Qt/c++ 随机字符串生成[重复]

    这个问题在这里已经有答案了 我正在创建一个应用程序 需要生成多个随机字符串 几乎就像一个由一定长度的 ASCII 字符组成的唯一 ID 这些字符混合有大写 小写 数字字符 有没有 Qt 库可以实现这一点 如果没有 在纯 C 中生成多个随机字
  • 头文件中实现的函数的静态与内联

    我想到的方式inline在 C 中用于链接 作用域 我把它放在同一个篮子里extern and static对于全局对象 通常 对于在头文件中实现的函数 我的首选解决方案是将其设为静态 In Foo h static void foo Do
  • 对 ExecuteNonQuery() 的单次调用是原子的

    对 ExecuteNonQuery 的单次调用是否是原子的 或者如果单个 DbCommand 中有多个 sql 语句 那么使用事务是否有意义 请参阅我的示例以进行说明 using var ts new TransactionScope us
  • C# 中 PKCS11Interop 库的线程安全使用 [已关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在使用 PKCS11Interop 在 HSM 内执行密钥管理操作 我使用的 HSM 是 Thales PCI Express 下面是
  • 我可以将 char 或 DateTime 设置为 null 吗?

    我可以将 null 设置为char数据类型 并且DateTime在 C 中 多谢你们 这是不可能的 它是一个值类型 使用 char myChar null DateTime myDate null 这相当于 Nullable
  • 如何调试.NET Windows Service OnStart方法?

    我用 NET 编写的代码仅在作为 Windows 服务安装时才会失败 该故障甚至不允许服务启动 我不知道如何进入 OnStart 方法 如何 调试 Windows 服务应用程序 http msdn microsoft com en us l
  • std::make_pair 与浮点数组(float2,无符号整数)

    我有一个用 float2 unsigned int 对模板化的向量 例如 std vector
  • 检查两个函数或成员函数指针的签名是否相等

    我编写了一些代码来检查自由函数的签名是否等于成员函数的签名等 它比较提取的返回类型和函数参数 include
  • 本地时间的内存需要释放吗?

    void log time t current time 0 tm ptm localtime current stuf 只是想确定 我是否需要在方法结束时释放 tm 指针分配的内存 不 你不应该释放它 该结构是静态分配的 检查文档 htt
  • 使用 OleDbCommand / OleDbDataAdapter 读取 CSV 文件

    我不明白为什么 但是当我使用 OleDbDataAdapter 或 OleDbCommand 读取 CSV 文件时 在这两种情况下 生成的数据结构良好 它识别文件头中的列 但行数据都是空字符串 我之前已经成功进行过多次 CSV 处理 因此我
  • 如果finally 块包含await,为什么*有时*不会在ThreadAbortException 上执行?

    UPDATE 我不认为这个问题是重复的ThreadAbortException最后可以跳过吗 https stackoverflow com questions 18002668 can threadabortexception skip
  • 应在堆栈上分配的最大数量

    我一直在寻找堆栈溢出有关应在堆栈上分配的最大内存量的指南 我看到了堆栈与堆分配的最佳实践 但没有关于应该在堆栈上分配多少以及应该在堆上分配多少的指南 有什么想法 数字可以作为指导吗 什么时候应该在堆栈上分配 什么时候应该在堆上分配 多少才算
  • 在特定线程上运行工作

    我想要一个特定的线程 任务队列并在该单独的线程中处理任务 应用程序将根据用户的使用情况创建任务并将其排队到任务队列中 然后单独的线程处理任务 即使队列为空 保持线程活动并使用它来处理排队任务也至关重要 我尝试过几种实现TaskSchedul
  • 实体框架读取列但阻止其更新

    给定一个数据库表 其中有一列包含历史数据但不再填充 实体框架中是否有一种方法可以读取该列 但在使用相同的模型对象时防止它被更新 例如我有一个对象 public class MyObject public string CurrentData
  • 如果仅使用第一个元素,是否必须为整个结构分配内存?

    我有一个结构 其中第一个元素被测试 并且根据其值 结构的其余部分将被读取或不会被读取 在第一个元素的值指示结构的其余部分不会被读取的情况下 我是否必须为整个结构或仅第一个元素分配足够的内存 struct element int x int
  • 如何在控制台程序中获取鼠标位置?

    如何在 Windows 控制台程序中用 C 获取鼠标单击位置 点击时返回鼠标位置的变量 我想用简单的文本命令绘制一个菜单 这样当有人点击时 游戏就会注册它并知道位置 我知道如何做我需要做的一切 除了单击时获取鼠标位置 您需要使用 Conso
  • 为什么 C++ 标准没有将 sizeof(bool) 定义为 1?

    Size of char signed char and unsigned char由 C 标准本身定义为 1 个字节 我想知道为什么它没有定义sizeof bool also C 03 标准 5 3 3 1 说 sizeof char s
  • 使用C标准数学库精确计算标准正态分布的CDF

    标准 C 数学库不提供计算标准正态分布 CDF 的函数 normcdf 然而 它确实提供了密切相关的函数 误差函数 erf 和互补误差函数 erfc 计算 CDF 的最快方法通常是通过误差函数 使用预定义常量 M SQRT1 2 来表示 d
  • 强制函数调用的顺序?

    假设我有一个抽象基类 并且我想要一个必须由派生类实现的纯虚方法 但我想确保派生方法以特定顺序调用函数 我可以做什么来强制执行它 I E base class virtual void doABC 0 virtual void A 0 vir

随机推荐

  • 使用任务时出现意外的线程中止异常。为什么?

    我有一个在应用程序域中运行的控制台应用程序 应用程序域由自定义 Windows 服务启动 该应用程序使用父任务来启动多个有效的子任务 当计时器寻找新工作时 在任何给定时间都可能有许多父任务和子任务一起运行 所有父任务的句柄位于任务列表中 s
  • 我必须实现哪些方法才能重新排列 UITableView 行?

    对于使用名为 rows 的字符串 NSMutableArray 的简单示例 我必须在表控制器中实现什么才能移动 tableView 行并将更改反映在我的数组中 我们在这里做繁重的工作 void tableView UITableView t
  • Flutter中JSON序列化和反序列化为对象

    由于 Flutter 从其 SDK 中删除了 dart 镜像 因此不再可能使用 dartson 等库进行 JSON 对象序列化 反序列化 不过 我读到built value 是实现类似目的的另一种方法 我找不到任何关于如何实现它的好例子 因
  • 所有小部件上的 Flutter 工具提示

    有没有办法设置tooltip on a Text widget new Text Some content tooltip Displays a message to you 这是行不通的 然而它确实有效 因为这里提到 https docs
  • 使用 GNU Make 将多行变量输出到文件

    我很难编写在文件中输出多行变量的 makefile 规则 这是我的代码 define VAR1 dev d 755 endef define VAR2 test d 777 test2 d 777 endef VARS VAR1 VARS
  • 组件的 Angular 2 指令会覆盖 ng-content?

    我有一个名为 ButtonComponent 的组件 import Component from angular2 core Component selector btn template div class btn div
  • 将 subprocess.Popen (shell=True) 与 Windows 文件夹一起使用

    我目前正在看Popen自动压缩和存储文档 对于压缩部分 我想到了以下Python行 subprocess Popen WinRAR exe a r c 03 Notes AllTexts txt shell True 我不断收到错误消息 因
  • Linkedin API - 按关键字搜索帖子

    我尝试通过 Linkedin API for PHP 将我的 Web 应用程序与 Linkedin 连接 有什么方法可以使用这个通过关键字搜索人们的出版物吗 如果可以的话 我还没有找到方法 我认为他们没有这种本机 所以他们可以避免报废 您可
  • 使用 Angular、node.js 和身份提供商进行 SAML 身份验证

    我想使用 SAML2 实现 SSO 但我不知道如何让它与分布式系统一起工作 其中每个实例都在自己的服务器上独立运行 该环境由三个实例组成 实例 1 有角度的前端 实例 2 node js 后端 使用express js Passport 实
  • Rails:如何安装 keywords.js?

    我想在我的应用程序上实现此功能 但我不知道如何安装它 您能否发布一步一步的信息 以便我了解要放置哪些文件 因为我尝试按照 github 页面上的说明进行操作 但没有成功 http vincentgarreau com articles js
  • 调用 Task.Result 时出现 ThreadAbortException

    我有以下代码 我尝试使用以下命令向远程端点发出请求HttpClient using var client new HttpClient client BaseAddress serviceBaseAddress Task
  • WCF - 网络成本

    我在 IIS 上部署了一个 wcf 服务 使用 basicHttpBinding 和 aspNetCompatibilityEnabled true 我还有一个测试客户端 它同时调用多个服务功能 为了检查客户端和服务器上服务调用的性能 我计
  • Angular 如何使用 rxjs 管道过滤可观察的数据

    我在服务文件中调用了一个名为 getWorkOrders 的方法 该方法又调用服务器来获取记录 这是我的服务 我正在使用新的 HttpClient export class BackendServices private BASE URL
  • 如何自定义 json 格式的 TestNG 报告结果

    我正在使用 TestNG 和 selenium webdriver java 我想制作一个json格式的输出报告 testng可以制作一个json格式的报告吗 请给我一个关于这个问题的例子 您可以编写自己的报告程序 以您需要的任何格式生成测
  • Python 编程。访问 Windows 右键菜单选项

    我希望能够自动化工作中的一些任务 其中之一是将 Power Point 文件合并并转换为 PDF 我是个新手 我刚刚读完 Magus Heitland 的 Beginning Python 所以我不太确定我具体要问什么 在 Windows
  • 编码的 UI 测试生成器无法为记录的操作生成代码

    我尝试在 Visual Studio 2015 Enterprise 中记录 Windows 10 上运行的 IE 中最简单的编码 UI 操作 问题是最近我开始得到Value cannot be null Parameter name ke
  • 在 ruby​​ 进程之间处理大数据对象

    如果使用 Marshal dump 写入文件 我的 Ruby 哈希值将达到大约 10 MB gzip 压缩后大约为 500 KB 在 ruby 中迭代和更改这个哈希值非常快 不到一毫秒 即使复制它也非常快 问题是我需要在 Ruby on R
  • C# 序列化对象并获取字节流

    我有一个对象 一个实例Serializable班级 我想知道如何以字节流的形式获取这个对象 我知道我可以使用BinaryFormatter http msdn microsoft com en us library c5sbs8z9 asp
  • 提高 pandas groupby 的性能

    我有一个用 Python 编写的机器学习应用程序 其中包括数据处理步骤 当我编写它时 我最初在 Pandas DataFrames 上进行数据处理 但是当这导致性能糟糕时 我最终使用普通 Python 重写了它 用 for 循环代替矢量化操
  • 获取错误的毫秒延迟值

    我试图获得 1 毫秒的延迟 但延迟增加了 15 倍 我也尝试过使用 WindowsSleep 1 函数也给了我相同的结果 为什么我没有得到精确的毫秒延迟 它的工作延迟为 1 秒 include