今天早上在Qtimer身邊纏了一點麻煩。延遲QTimer開始?
這裏的基本思想是:
我有一個是通過點擊一個按鈕,啓動了一個QTimer。 一旦它被激活,每5分鐘它就會調用一個函數(我們稱之爲start())。
Start()使用QtConcurrent調用獨立函數(稱爲工作())。因此,儘管處理仍然存在,但它會很快返回。
這是我的問題: 我想一次接一次地調用work()幾次。我的問題是,目前,它會在完成處理之前多次調用work()函數,因爲它與硬件接口不起作用。
我應該如何正確處理?
編輯:
這裏是節目的基本流程:
- 用戶點擊startTimer所()。
- 開始時間()調用timer->開始()
- 當計時器發出信號,它調用啓動()
- 開始()不一些光UI東西,然後使確實 未來= QtConcurrent ::運行(... work()...)//工作需要很長時間 watcher-> setFuture(* future)
- 不知何故(這是我的問題),當work()完成時,我想調用它再次(準確地說是4次)
嗯,聽起來不錯。但是,我應該如何檢查執行何時完成(然後再次立即調用work())? – hex4def6
在工作函數開始時有一個mutexlocker後,只要work()完成,就會調用mutex。在執行期間,所有其他線程將在work()函數開始時被阻塞。自動解鎖互斥鎖後,第一個等待線程將鎖定它並開始執行。檢查[同步Qt線程以獲取更多詳細信息](http://doc.qt.nokia.com/latest/threads-synchronizing.html) – pnezis
ohh,所以它比「拒絕執行」更像是「延遲執行」 – hex4def6