延迟后执行C++函数而不使用睡眠
问题描述:
是否有一种简单的方法可以在C++中发生特定延迟之后发生某些事情? 在python中,我只是使用了frame.after(ms,myFunction),它很好用又简单 - 它看起来像是C++中一个非常棘手的问题! 以前曾有人建议我使用Sleep(),但不幸的是,这不起作用,因为我正在为Half-Life 2编写一个Mod,如果我使用Sleep,那么整个游戏将持续X秒,而不是仅仅在调用事件之后X秒。 那么在没有使用睡眠的情况下,是否有另一种方法在特定延迟后调用函数?延迟后执行C++函数而不使用睡眠
答
为什么不使用带定时器的线程? 检查这个网站:https://codereview.stackexchange.com/questions/40915/simple-multithread-timer
答
基本上,你有2个选择恕我直言:
- 创建第二个
thread
将睡觉的,而不是你的主要thread
。 - 创建第二个包含计时器的
thread
。
我只能建议boosts io_service
你可能想通过所有的timer tutorials如果你是新来提振。
如果你想留在std
检查这个link的详细信息,std::async
而且this关于如何使用std::threads
指南['标准::异步()'] (http://en.cppreference.com/w/cpp/thread/async)与'std :: this_thread :: sleep()'?这可以接受吗? – 2014-11-06 22:11:04
假设'frame.after(ms,myFunction)'是Half-Life mod的Python API的一部分,那么必须有一个C++等价物,这就是你想要的。 – zwol 2014-11-06 22:22:43