运行 同时延迟不止一个? (C)
Running more than one delay at the same time ? (C)
我正在尝试编写这个程序,在任何时候触发传感器我想延迟 3 秒然后执行一些操作,这应该非常简单。
理想情况下应该是(传感器触发)3 ... 2 ... 1 ...(做某事),我正在努力解决的是倒计时开始的场景 3 ... 2 ... (再次触发传感器)1...(做某事),现在这就是事情分崩离析的地方,因为我需要另一个延迟来同时从 3 开始倒计时,但我不知道如何实现。我希望我可以 post 那部分代码,但整个代码是链接在一起的。有没有办法用简单的 C 代码来做到这一点,或者这是否需要高级技术?
每当传感器触发时,启动一个线程,延迟(倒计时)并在线程函数内做一些事情(无论你想做什么)。
方法有很多种:
- 使用线程。传感器线程将读取传感器并休眠 3 秒。
- 使用非阻塞延迟
unsigned getTick(void); // for example 1000 ticks per second
vooid foo(void)
{
unsigned sensor1StartTime = 0;
while(1)
{
if(!sensor1StartTime || (getTick() - sensor1StartTime >= 3000))
{
handleSensor1(); // it will be executed every ~three seconds
sensor1StartTime = getTick();
}
// do something else
// "something else" will not be blocked by delay.
}
}
我正在尝试编写这个程序,在任何时候触发传感器我想延迟 3 秒然后执行一些操作,这应该非常简单。
理想情况下应该是(传感器触发)3 ... 2 ... 1 ...(做某事),我正在努力解决的是倒计时开始的场景 3 ... 2 ... (再次触发传感器)1...(做某事),现在这就是事情分崩离析的地方,因为我需要另一个延迟来同时从 3 开始倒计时,但我不知道如何实现。我希望我可以 post 那部分代码,但整个代码是链接在一起的。有没有办法用简单的 C 代码来做到这一点,或者这是否需要高级技术?
每当传感器触发时,启动一个线程,延迟(倒计时)并在线程函数内做一些事情(无论你想做什么)。
方法有很多种:
- 使用线程。传感器线程将读取传感器并休眠 3 秒。
- 使用非阻塞延迟
unsigned getTick(void); // for example 1000 ticks per second
vooid foo(void)
{
unsigned sensor1StartTime = 0;
while(1)
{
if(!sensor1StartTime || (getTick() - sensor1StartTime >= 3000))
{
handleSensor1(); // it will be executed every ~three seconds
sensor1StartTime = getTick();
}
// do something else
// "something else" will not be blocked by delay.
}
}