使用延迟而不使用sleep函数在C++中执行函数

5
有没有一种简单的方法在C++中延迟一段时间后执行某个操作? 在Python中,我只需要使用frame.after(ms,myFunction)就可以了,这很方便 - 但在C++中看起来要麻烦得多! 之前有人建议我使用Sleep(),不幸的是,这并不适用于我正在为Half-Life 2编写的模组,因为如果我使用Sleep,整个游戏会在X秒钟内挂起,而不仅仅是在X秒钟后调用事件。 那么,有没有其他方法可以在延迟一段时间后调用函数,而不使用sleep呢?

2
使用std::this_thread::sleep()std::async()一起使用,这样可以吗? - The Paramagnetic Croissant
假设 frame.after(ms, myFunction) 是 Half-Life 模组 Python API 的一部分,那么必定存在 C++ 等效代码,这正是您所需要的。 - zwol
2个回答

1

我认为你有两个选择:

  1. 创建第二个 线程,让它睡眠而不是你的主 线程
  2. 创建一个包含计时器的第二个 线程

如果你是boost的新手,我只能推荐 boosts io_service

如果你是boost的新手,你可能需要阅读所有的 计时器教程


如果你想使用 `std`,请查看链接以获取有关 `std::async` 的更多信息。
而要了解如何使用 `std::threads`,请查看此指南

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接