我一直在阅读https://nodemcu.readthedocs.io/en/master/en/lua-developer-faq/#esp8266-specifics,文档说Lua代码需要返回,以便SDK可以运行其他任务:
所有其他服务和应用程序处理都分为代码执行块,称为任务。各个任务一次执行一个并运行完成。没有任务永远不会先于另一个任务。
和
Lua库与SDK配合使用,可以对未决事件进行排队,并调用任何已注册的Lua回调例程,然后不间断地运行完成。
然后PiL说yield可以用来暂停函数调用,这可以在以后恢复:
协同程序的真正威力源于yield函数,它允许运行的协程暂停执行,以便以后可以恢复。
我的问题是:当执行coroutine.yield(c)
时,NodeMCU的eLua实现是否将控件返回到SDK? ...那么用NodeMCU / eLua firwmare实现协作多线程算法是可能的吗?
coroutine.resume(c)
在这种情况下如何运作?