在 C++ 中使用 setInterval()

2024-03-20

在JavaScript中,有一个函数叫做setInterval()。用C++可以实现吗?如果使用循环,程序不会继续,而是继续调用该函数。

while(true) {
    Sleep(1000);
    func();
}
cout<<"Never printed";

没有内置的setInterval在C++中。你可以用异步函数来模仿这个函数:

template <class F, class... Args>
void setInterval(std::atomic_bool& cancelToken,size_t interval,F&& f, Args&&... args){
  cancelToken.store(true);
  auto cb = std::bind(std::forward<F>(f),std::forward<Args>(args)...);
  std::async(std::launch::async,[=,&cancelToken]()mutable{
     while (cancelToken.load()){
        cb();
        std::this_thread::sleep_for(std::chrono::milliseconds(interval));
     }
  });
}

use cancelToken取消间隔

cancelToken.store(false);

但请注意,该机制为该任务构造了一个新线程。它不适用于许多区间函数。在这种情况下,我将使用已经编写的线程池和某种时间测量机制。

编辑:示例使用:

int main(int argc, const char * argv[]) {
    std::atomic_bool b;
    setInterval(b, 1000, printf, "hi there\n");
    getchar();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C++ 中使用 setInterval() 的相关文章

  • 编译时运算符

    有人可以列出 C 中可用的所有编译时运算符吗 C 中有两个运算符 无论操作数如何 它们的结果始终可以在编译时确定 它们是sizeof 1 and 2 当然 其他运算符的许多特殊用途可以在编译时解决 例如标准中列出的那些整数常量表达式 1 与
  • C 编程 - 文件 - fwrite

    我有一个关于编程和文件的问题 while current NULL if current gt Id Doctor 0 current current gt next id doc current gt Id Doctor if curre
  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • 通过 CMIS (dotCMIS) 连接到 SP2010:异常未经授权

    我正在使用 dotCMIS 并且想要简单连接到我的 SP2010 服务器 我尝试用 C 来做到这一点 如下所示http chemistry apache org dotnet getting started with dotcmis htm
  • “构建”构建我的项目,“构建解决方案”则不构建

    我刚刚开始使用VS2010 我有一个较大的解决方案 已从 VS2008 成功迁移 我已将一个名为 Test 的控制台应用程序项目添加到解决方案中 选择构建 gt 构建解决方案不编译新项目 选择构建 gt 构建测试确实构建了项目 在失败的情况
  • 以文化中立的方式将字符串拆分为单词

    我提出了下面的方法 旨在将可变长度的文本拆分为单词数组 以进行进一步的全文索引处理 删除停止词 然后进行词干分析 结果似乎不错 但我想听听关于这种实现对于不同语言的文本的可靠性的意见 您会建议使用正则表达式来代替吗 请注意 我选择不使用 S
  • 在哪里可以找到列出 SSE 内在函数操作的官方参考资料?

    是否有官方参考列出了 GCC 的 SSE 内部函数的操作 即 头文件中的函数 除了 Intel 的 vol 2 PDF 手册外 还有一个在线内在指南 https www intel com content www us en docs in
  • Asp.NET WebApi 中类似文件名称的路由

    是否可以在 ASP NET Web API 路由配置中添加一条路由 以允许处理看起来有点像文件名的 URL 我尝试添加以下条目WebApiConfig Register 但这不起作用 使用 URIapi foo 0de7ebfa 3a55
  • 嵌套接口:将 IDictionary> 转换为 IDictionary>?

    我认为投射一个相当简单IDictionary
  • Clang 3.1 + libc++ 编译错误

    我已经构建并安装了 在前缀下 alt LLVM Clang trunk 2012 年 4 月 23 日 在 Ubuntu 12 04 上成功使用 GCC 4 6 然后使用此 Clang 构建的 libc 当我想使用它时我必须同时提供 lc
  • 堆栈溢出:堆栈空间中重复的临时分配?

    struct MemBlock char mem 1024 MemBlock operator const MemBlock b const return MemBlock global void foo int step 0 if ste
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • 这些作业之间是否存在顺序点?

    以下代码中的两个赋值之间是否存在序列点 f f x 1 1 x 2 不 没有 在这种情况下 标准确实是含糊不清的 如果你想确认这一点 gcc 有这个非常酷的选项 Wsequence point在这种情况下 它会警告您该操作可能未定义
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • IEnumreable 动态和 lambda

    我想在 a 上使用 lambda 表达式IEnumerable
  • 如何在文本框中插入图像

    有没有办法在文本框中插入图像 我正在开发一个聊天应用程序 我想用图标图像更改值 等 但我找不到如何在文本框中插入图像 Thanks 如果您使用 RichTextBox 进行聊天 请查看Paste http msdn microsoft co
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低

随机推荐

  • 使用 FCM 时的通知跟踪

    当我在不使用 Firebase 服务仪表板的情况下发送推送通知时 是否可以跟踪通知状态 无论是用户打开还是取消 我在用Advanced REST client我想在将有效负载发送到时记录有关通知状态的数据https fcm googleap
  • 如何使用 Parse 找到当前用户位置附近的用户?

    我的应用程序需要找到用户的当前位置 我已经完成了 然后它需要找到当前用户位置附近的其他用户 我正在为此使用 Parse 到目前为止 这就是我必须获取用户当前位置的方法 并且到目前为止它正在工作 不过 我不明白如何找到当前用户位置附近的其他用
  • 使用 jQuery 重命名 jQuery UI 选项卡

    我有 3 个标签 div ul li a href tabs 1 Tab1 a li li a href tabs 2 Tab2 a li li a href tabs 3 Tab3 a li ul div div div div div
  • Visual Studio 9 解决方案中的项目数量是否会影响解决方案加载和生成时间?

    我对解决方案加载时间和构建时间特别感兴趣 更少的解决方案是否意味着更好的性能 请注意 我是not指的是所构建应用程序的性能 处理较少数量的项目时 加载时间和构建时间是否更高效 作为指导 我们的 Visual Studio 解决方案中有 50
  • 具有命名约定的可见性自动绑定

    我真的很喜欢 Caliburn 和命名约定绑定 并且很惊讶 可见性的约束方式与使用 CanNAME 约定保护操作的方式不同 据我所知 BooleanToVisibilityConverter 仅在 Caliburn 中显式使用 Bindin
  • mysql concat_ws 没有重复项

    我试图将几个字段连接成一个字段 但只在结果字符串中保留唯一值 Example title orig title fr title de title it KANDAHAR KANDAHAR REISE NACH KANDAHAR VIAGG
  • Angular2:如何从node_modules导入样式表?

    问题 在我的 Angular2 4 0 应用程序中 如何从 node modules 中的模块导入样式表 css 我有一个模块位于此处 node modules swimlane ngx datatable 我想导入这个样式表 node m
  • iOS 使用 UIActivityViewController 将图像共享到 LinkedIn

    我正在尝试将图像共享给我的设备中安装的所有可能的应用程序 但不幸的是 我无法将图像成功发布到 LinkedIn 已安装并以经过验证的用户身份登录 LinkedIn 显示在 UIActivityViewController 中的共享操作列表中
  • Azure 存储 SAS 身份验证失败

    我有一个私有的 azure 存储容器 并且正在尝试 azure 存储 SAS 以便我可以上传和下载文件 我能够生成签名 但它总是向我抛出身份验证失败错误 AuthenticationFailed服务器无法验证请求 确保授权标头的值格式正确
  • python 类型提示不会为错误类型生成错误

    我最近正在检查类型提示 在阅读了一些理论后 我尝试了一个简单的示例 如下所示 def myfun num1 int num2 int gt int return str num1 num2 a myfun 1 abc print a out
  • 在 PHP 中输​​出带有换行符的文本文件

    我正在尝试打开一个文本文件并使用下面的代码输出其内容 该文本文件包含换行符 但当我回显该文件时 其未格式化 我该如何解决 Thanks fh fopen filename txt r pageText fread fh 25000 echo
  • 用双斜杠替换单斜杠,php

    如何用双斜杠替换单斜杠 我有这样的文字 data folder and i need get data folder 我尝试替换 但出现错误 data str replace data 你说的是反斜杠还是普通斜杠 无论如何 请检查下面的代码
  • Python 3 类型注释和子类

    如何在 Python 类型注释中引用 任何子类化父类的对象 例子 FooBase是一个抽象基类 其中Foo1 Foo2等被子类化 我希望该函数接受任何后代FooBase 这会吗 def do something self bar FooBa
  • 使用seaborn时如何从箱线图中获取统计值?

    我用seaborn制作了一个箱线图 我想获得一些统计值 例如最小值 第一四分位数 中位数 第三四分位数 最大值以及异常值 是否有任何函数或属性可以通过 seaborn boxplot 直接收集这些值 或者我应该通过其他包或手动计算这些 使用
  • 为什么我的本地对象被破坏了两次?

    我有一个返回本地对象的函数 class AT public AT cout lt lt construct lt
  • Birt 查看器无法加载报告查询

    当我尝试运行 BIRT 查看器时 显示以下错误 无法加载报表查询 163 为 ID 为 163 的报表元素生成报表文档时发生错误 元素 ID 163 但同一模块在 Eclipse 中成功地给出了报表设计结果 我正在使用 JDBC 连接 我该
  • 如何将JSON数据保存在本地(本机上)?

    我使用以下链接创建树状结构 这是我的代码
  • 删除零线二维numpy数组

    I run a qr factorization in numpy它返回一个列表ndarrays 即Qand R gt gt gt q r np linalg qr np array 1 0 0 0 1 1 1 1 1 reshape 3
  • 如何重定向到 CloudFront 分配中的特定 CNAME

    我在 AWS 中有 2 个 CloudFront 发行版 每个发行版都有自己不同的证书 每个 CNAME 都附加了多个 CNAME 并且每个 CNAME 在 Route 53 中都有一个对应的记录集 有没有办法将其中一个 URL 重定向到另
  • 在 C++ 中使用 setInterval()

    在JavaScript中 有一个函数叫做setInterval 用C 可以实现吗 如果使用循环 程序不会继续 而是继续调用该函数 while true Sleep 1000 func cout lt lt Never printed 没有内