【问题标题】:How can I launch a function at a specific time in C++?如何在 C++ 中的特定时间启动函数?
【发布时间】:2011-05-21 22:59:24
【问题描述】:

是否可以在 C++ 中的特定时间调用函数?例如,我想在 number_of_elapsed_milliseconds_since_application_start = x 时启动函数 doIt()。

跨平台解决方案将是理想的。

【问题讨论】:

  • 启动新线程。 sleep(number_of_elapsed_milliseconds_since_application_start); doit();

标签: c++ time


【解决方案1】:

在纯 C++ 中可能不会,您将需要一些特定于操作系统的代码。但是您可以使用独立于平台的 OS 包装器,例如 Qt(尽管对于您非常简单的问题,这可能有点矫枉过正)。

编辑:您可以做的最简单的事情是在循环中主动阻止程序,不断轮询当前时间,直到达到最后期限,但这可能不是一个非常有用的解决方案.所以如果没有线程或一些事件驱动的计时器(每个操作系统都应该有),你不会走得太远。

【讨论】:

  • 我认为每个主要操作系统都有sleep 功能,这对于非标准代码来说确实是您所需要的。
  • @MooingDuck 好吧,当然随着 C++11 的出现,我的回答没有多大意义。
【解决方案2】:

创建一个线程,让它休眠直到那个时间,休眠之后,让它运行那个函数。

【讨论】:

  • +1,虽然我会注意到我们没有使用实时操作系统,所以线程不会在预定的时间唤醒,它会有点偏离,多少取决于当前机器负载。
【解决方案3】:

这就是所谓的“回调”函数或“侦听器”。更多关于实现的信息可以在这里找到:http://www.cprogramming.com/tutorial/function-pointers.html

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-26
    • 2013-09-07
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多