【问题标题】:execute function in C++ after a delay without using sleep延迟后在 C++ 中执行函数而不使用睡眠
【发布时间】:2014-11-06 22:06:45
【问题描述】:

有没有一种简单的方法可以在 C++ 中的特定延迟之后发生某些事情? 在 python 中,我只使用 frame.after(ms,myFunction),它既好又简单——这在 C++ 中似乎是一个更棘手的问题! 以前有人建议我使用 Sleep(),不幸的是,这不起作用,因为我正在为半条命 2 编写一个 mod,如果我使用 Sleep,那么整个游戏会挂起 X 秒,而不是仅仅在 X 之后调用事件秒。 那么是否有另一种方法可以在不使用睡眠的情况下在特定延迟后调用函数?

【问题讨论】:

  • std::async()std::this_thread::sleep()?这可以接受吗?
  • 假设 frame.after(ms, myFunction) 是半条命模组的 Python API 的一部分,那么必须有一个 C++ 等价物,这就是你想要的。

标签: c++ delay delayed-execution


【解决方案1】:

基本上你有 2 个选项恕我直言:

  1. 创建第二个thread,它将休眠而不是您的主要thread
  2. 创建第二个thread,其中包含一个计时器。

我只能推荐boosts io_service

如果您是 boost 新手,您可能需要浏览所有 timer tutorials


如果您想继续使用std,请查看link,了解有关std::async 的更多信息

this 获取有关如何使用std::threads 的指南

【讨论】:

    【解决方案2】:

    为什么不使用带计时器的线程? 查看本站:https://codereview.stackexchange.com/questions/40915/simple-multithread-timer

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-24
      • 2013-03-03
      • 1970-01-01
      • 2012-04-02
      • 2014-09-24
      • 2017-07-16
      • 1970-01-01
      • 2015-10-13
      相关资源
      最近更新 更多