2011-09-06 54 views
1

是否有可能在C++中編寫try,catch語句和定時器的方式,如果函數不能被執行(它被卡住)程序只是繼續?嘗試x秒,然後離開?

+0

你可能不得不揭開序幕一個單獨的線程做的工作和監控線程。 – Rup

+0

你能提供最少的代碼示例嗎?由於'try/catch',我無法獲知程序如何卡住? – iammilind

+0

如果你真的想要「陷入困境」而不是「花費漫長而確定的時間」,那麼你最好把它縮小到可以阻止和替換非阻塞版本的程序部分。 –

回答

0

最可靠的方法是在子進程中執行工作,等待子進程超時,然後將其終止。

0

KISS:

clock_t start = clock(); 
const int max_try_clocks = 5 * CLOCKS_PER_SEC; // 5 is the number of seconds 
               // we should keep trying for 
try_again: 
    try { 
    // whatever you need to try 
    } catch (...) { 
    if (clock() - start < max_try_clocks) 
     goto try_again; 
    }