2016-07-15 71 views
1

我想在每分鐘毫米開始運行的函數:00.000在每分鐘開始時運行一個函數?

所以,我想運行的功能(性能比較是非常importnant)每到這個條件爲真:

(std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count()) % 6000 == 0 

任何想法如何做到這一點?

+2

我會使用一個線程。讓它一直睡到下一分鐘開始。然後檢查更細的時間粒度。 –

回答

1

開始一個單獨的線程。

線程檢查std::chrono_system_clock,並計算下一個分鐘邊界的絕對時間。有幾種方法可以使線程在規定的時間內到達睡眠狀態。一種方法是創建一個私有互斥量和條件變量,鎖定互斥量,然後調用wait_until()作爲下一個分鐘邊界的絕對時間。由於沒有別的東西會通知條件變量,因此線程會直到睡眠時間到達規定的時間,然後您的線程才能調用給定的函數。

一個單獨的線程是嚴格沒有必要的。如果你的主執行線程無關,這可以作爲主執行線程的一部分完成,否則。

相關問題