2014-11-06 35 views
2

是否有一種簡單的方法可以在C++中發生特定延遲之後發生某些事情? 在python中,我只是使用了frame.after(ms,myFunction),它很好用又簡單 - 它看起來像是C++中一個非常棘手的問題! 以前曾有人建議我使用Sleep(),但不幸的是,這不起作用,因爲我正在爲Half-Life 2編寫一個Mod,如果我使用Sleep,那麼整個遊戲將持續X秒,而不是僅僅在調用事件之後X秒。 那麼在沒有使用睡眠的情況下,是否有另一種方法在特定延遲後調用函數?延遲後執行C++函數而不使用睡眠

+1

指南['標準::異步()'] (http://en.cppreference.com/w/cpp/thread/async)與'std :: this_thread :: sleep()'?這可以接受嗎? – 2014-11-06 22:11:04

+0

假設'frame.after(ms,myFunction)'是Half-Life mod的Python API的一部分,那麼必須有一個C++等價物,這就是你想要的。 – zwol 2014-11-06 22:22:43

回答

0

基本上,你有2個選擇恕我直言:

  1. 創建第二個thread將睡覺的,而不是你的主要thread
  2. 創建第二個包含計時器的thread

我只能建議boosts io_service

你可能想通過所有的timer tutorials如果你是新來提振。


如果你想留在std檢查這個link的詳細信息,std::async

而且this關於如何使用std::threads