我想在Atmel評估工具包中使用C++實現超時函數。C++超時函數
程序應該打開函數「start()」,如果這個函數沒有在「0.5s」內完成,它應該被終止。
是否有任何現有的功能來做這樣的工作?
方面 MATL
我想在Atmel評估工具包中使用C++實現超時函數。C++超時函數
程序應該打開函數「start()」,如果這個函數沒有在「0.5s」內完成,它應該被終止。
是否有任何現有的功能來做這樣的工作?
方面 MATL
是:std::future::wait_for
。你得到future_status::ready
或future_status::timeout
。
僅在C++ 11(-std = C++ 11或-std = C++ 0x,取決於編譯器)下才有可能。在C++ 03上,你必須使用OS調用(如果有的話)或通過中斷 –
@ elvis.dukaj來實現:當然。但這個問題沒有被標記爲C++ 03或C++ 14,所以合理的假設就是今天定義的C++。 – MSalters
根據我的經驗,這些功能總是手工製作的,因爲在嵌入式系統中,目標系統不是標準化的。
您可以購買操作系統並使用消息超時和睡眠等方法。
沒有操作系統,您必須使用定時器和定時器中斷(ISR)來自己設計功能。
有沒有什麼建議如何用定時器和定時器中斷創建超時?目前我不知道如何去實現這樣的事情。如果程序掛在函數start()中,如何訪問定時器數據?也許這只是一個\t推理錯誤,但我現在不明白。 – matl
@matl這是非常具體的hw。你必須參考與環境給出的圖書館 –
嘗試使用睡眠在被調用者和睡眠後返回給調用者 –
看看'std :: async'和'std :: chrono' – OMGtechy
@AliKazmi:睡眠功能需要一個操作系統。嵌入式系統可能沒有OS。 –