在不使用睡眠的情况下在延迟之后执行C++中的函数
execute function in C++ after a delay without using sleep
在C++中,有没有一种简单的方法可以在特定的延迟后发生一些事情?在python中,我只使用frame.after(ms,myFunction),这很好也很简单——在C++中这似乎是一个更棘手的问题!之前有人建议我使用Sleep(),不幸的是,这不起作用,因为我正在为《半条命2》编写mod,如果我使用Slep,那么整个游戏将挂起X秒,而不是在X秒后调用事件。那么,有没有其他方法可以在特定延迟后调用函数而不使用睡眠?
基本上你有两个选项imho:
- 创建第二个
thread
,它将睡眠,而不是主thread
- 创建第二个包含计时器的
thread
我只能推荐提升io_service
如果你是新手,你可能想学习所有的计时器教程。
如果您想继续使用std
,请查看此链接以了解有关std::async
的更多信息
这是关于如何使用std::threads
的指南
为什么不使用带计时器的线程检查此网站:https://codereview.stackexchange.com/questions/40915/simple-multithread-timer
相关文章:
- 如何在析构函数中执行一些代码*在*成员被销毁之后
- 为什么函数不在特定函数之后执行
- 执行QACTION之后如何设置焦点
- spin() 函数之后的额外代码不会执行
- 使用GetModuleFilenameEx之后,如何仅获得可执行的名称
- 将在 CATCH 块之后执行代码
- 在机器异常之后重新执行程序
- 在调用GNUPLOT之后,如何继续执行C 代码
- 线程在成功pthread_create之后不执行任何操作
- Visual C++Express.exe在第一次执行之后再次运行
- 在执行cin之后,对标准输入中的字符数进行计数
- 赋值重载显式调用析构函数(在执行其他二进制重载运算符之后)
- 在不使用睡眠的情况下在延迟之后执行C++中的函数
- 在MAKE之后,如何运行一个不可执行的文件
- 虽然循环中断,但之后的代码永远不会执行
- 在执行remove_if()之后擦除()
- 在lanching vcvarsall.bat之后从ant执行msbuild
- 当在fiber.detach()之后执行时
- 执行else块和if块之后的代码
- 松弛的内存顺序效果是否可以扩展到执行线程的生命周期之后?