【发布时间】:2020-07-20 21:53:52
【问题描述】:
如何在 C++11/14/17/20 中实现一个在主线程上运行的定时器而不阻塞主线程
喜欢:
startTimerInCurrentTheadWithoutBlockCurrentThread(Seconds(1),[](){
//invoke method every 1 second
method();
});
我知道有很多项目,例如:https://www.fluentcpp.com/2018/12/28/timer-cpp/
但他们都开始了一个新线程。
【问题讨论】:
-
所有可用的库/项目在新线程中启动计时器是有原因的。那是因为如果你不这样做,那么你的 main 方法将被 timer 方法阻塞。您肯定不希望您的程序只是继续计数而不进行任何实际处理。
-
请不要发送垃圾标签。 C 在这里不合适,因为 lambda.不需要 C++11、14、17 和 17。
-
几乎任何以“我们能做...”(或类似)开头的问题都可以用“是”来回答。请尝试详细说明您的问题,并edit您的问题以改进它。也请花点时间刷新the help pages,取SOtour,阅读How to Ask,以及this question checklist。
-
@DebarghaRoy 在 iOS、Android 中,我们在主线程中有一个 runloop。在应用程序被杀死之前,线程一直处于活动状态。所以我想在这个主线程中有一个计时器。
-
@Someprogrammerdude 我喜欢你的自我推销 :) 今天你可以使用
boost::asio::deadline_timer不?