2016-07-15 7 views
1

私は毎分ミリメートルの開始時に関数を実行しようとしています:1分ごとに関数を実行しますか?

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

:00.000

だから、私は(もパフォーマンスが非常にimportnantある)たびに、この条件が真である機能を実行したいですどのようにこれを行うにはどのようなアイデア?

+2

スレッドを使用します。次の分が始まる直前まで、寝る。次に細かい時間の粒度をチェックします。 –

答えて

1

別のスレッドを開始します。

スレッドはstd::chrono_system_clockをチェックし、次の分境界の絶対時間を計算します。所定の時間が到来するまでスレッドをスリープ状態にする方法はいくつかあります。 1つの方法は、スレッドがプライベートミューテックスと条件変数を作成し、ミューテックスをロックし、次の分境界の絶対時間をwait_until()と呼ぶことです。他には何も条件変数に通知しないので、スレッドは所定の時間が到来するまで単にスリープ状態になり、スレッドは与えられた関数を呼び出すことができます。

個別のスレッドは厳密には必要ありません。メインの実行スレッドが何もしていなければ、これはすべてメインの実行スレッドの一部として実行できます。

関連する問題