我正在使用CPP,我想實現超時機制。
表格示例,稱爲「foo()」的函數,它只會觸發一個函數在超時後執行並返回。超時後CPP呼叫功能
爲什麼我需要這個?
我有一個Android應用程序使用一個CPP庫(使用JNI接口)在那個庫中有一些需要時間處理的函數。我不能在單獨的線程中調用這些函數(從java或CPP作爲lib限制),並且因爲我在android應用程序中獲得了ANR。
所以我會做什麼,我會調用CPP層中的一個函數使用JNI,它將啓動一個計時器,並將返回,以便Android中的UI線程不會給予ANR,當此計時器超時時,它會調用該時間採取功能和處理完成後,它會通知java層。
我應該如何實施?
這個問題應該幫助:http://stackoverflow.com/questions/879896/c-how-to-implement-a-timeout-for-an-任意函數調用 – Dennis 2012-08-17 09:33:08
有沒有什麼辦法可以在cpp中實現定時器,在超時時會有一個函數。 – User7723337 2012-08-17 10:02:31
爲什麼「不能在單獨的線程中調用這些函數」?你不能沒有線程。如果這是一個耗時且不可中斷的進程,則可以在主線程(並獲取ANR)或其他線程中執行它。如果你的執行在定時器觸發,它將或者已經是一個單獨的線程(定時器正在滴答),或者定時器將發送一些線程信號。它也可以表示主線程,但是你沒有辦法解決。 – 2012-08-17 14:15:46