2016-07-15 33 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()作为下一个分钟边界的绝对时间。由于没有别的东西会通知条件变量,因此线程会直到睡眠时间到达规定的时间,然后您的线程才能调用给定的函数。

一个单独的线程是严格没有必要的。如果你的主执行线程无关,这可以作为主执行线程的一部分完成,否则。

相关问题