我想问一些我认为在 tinyos2 编程手册中没有明确说明的问题。当命令或任务发出接口事件信号时,是立即调用连接函数,即在同一个调用堆栈中,还是这些信号事件“发布”以供以后执行?
我倾向于相信它是前一个,但只是为了澄清它。
TinyOS 1 or 2 does not make a difference here - this is a nesC question. Upon signal, execution begins immediately. However, if multiple components are wired to an interface, execution is done one after another (aka. fan-out).
我只知道 TinyOS v1,但我相信它们在这方面是相同的。
事件只是函数调用,因此与调用者在同一个堆栈上执行。
如果需要发布某些内容以供以后执行,则应将其实现为任务。因此,需要长时间运行工作以响应事件但又不想干扰中断延迟的事件消费者应该安排一个任务,该任务应该做一点工作,然后安排一个任务去做更多的工作以同样的方式。