【发布时间】:2016-08-24 22:38:10
【问题描述】:
我尝试在具有有限库函数的嵌入式设备上用 C++ 实现周期性事件。我不能使用睡眠或其他延迟,因为它会停止当前的执行。
例如。
do
{
if(something)
{
//Do something
}
if(something)
{
//Do something
}
if(every 5 minutes)
{
//Do something only once after 5 minutes
}
}
while(true)
我不知道该怎么做。你能帮我解决这个问题,因为我需要在这个 do while 循环中实现它吗?我会使用线程,但在这个设备上这实际上是不可能的,所以我正在寻找另一种方法。
【问题讨论】:
-
如果只有一种方法可以在循环中获取当前时间...
-
您是在 POSIX 系统上运行它吗?您可以在 5 分钟后使用
alarm()发送信号,信号处理程序将执行您想要的操作。 -
或者,在一个推动下,孵化一个
std::thread和sleep。但只有在绝望的情况下——线程不是空闲的。 -
你可能想在这里设置一个事件循环,或者使用像libuv这样的现成的,它为你提供了很多计时器功能。
-
@RadLexus,我很高兴你喜欢我的幽默 :-)