2014-03-24 25 views
1

我想在Atmel評估工具包中使用C++實現超時函數。C++超時函數

程序應該打開函數「start()」,如果這個函數沒有在「0.5s」內完成,它應該被終止。

是否有任何現有的功能來做這樣的工作?

方面 MATL

+0

嘗試使用睡眠在被調用者和睡眠後返回給調用者 –

+0

看看'std :: async'和'std :: chrono' – OMGtechy

+1

@AliKazmi:睡眠功能需要一個操作系統。嵌入式系統可能沒有OS。 –

回答

1

是:std::future::wait_for。你得到future_status::readyfuture_status::timeout

+1

僅在C++ 11(-std = C++ 11或-std = C++ 0x,取決於編譯器)下才有可能。在C++ 03上,你必須使用OS調用(如果有的話)或通過中斷 –

+0

@ elvis.dukaj來實現:當然。但這個問題沒有被標記爲C++ 03或C++ 14,所以合理的假設就是今天定義的C++。 – MSalters

1

根據我的經驗,這些功能總是手工製作的,因爲在嵌入式系統中,目標系統不是標準化的。

您可以購買操作系統並使用消息超時和睡眠等方法。

沒有操作系統,您必須使用定時器和定時器中斷(ISR)來自己設計功能。

+0

有沒有什麼建議如何用定時器和定時器中斷創建超時?目前我不知道如何去實現這樣的事情。如果程序掛在函數start()中,如何訪問定時器數據?也許這只是一個\t推理錯誤,但我現在不明白。 – matl

+0

@matl這是非常具體的hw。你必須參考與環境給出的圖書館 –