Arduino计划支持多任务处理

随着开发板硬件的增强以及开发者对同时处理多个任务的需求,Arduino官方已经着手规划与讨论在Arduino上支持多任务处理。

由于Arduino的硬件能力提升,不只处理器时脉更高,也拥有多个核心,Arduino能够处理的工作越来越复杂,而开发者也希望能利用Arduino开发更加强大的应用,像是在控制电子机械的同时,还能够更新显示器,并且与用户互动,或者等待外部事件。

过去要达到这个目的,开发者必需要编写非阻塞式程序代码,快速执行loop函数更新状态变量,并且调用millis函数确保时间正确,但官方提到,这种方法会导致程序代码过度膨胀,不只难以调试和维护,也无法支持多核心。

另一种方法是使用调度函数库的协作多任务,借由将工作拆分成多个循环函数,让每个循环函数专注执行特定任务,但官方提到,这种方法仍需要开发者在编写程序代码时避免阻塞,而且也难以支持多核,即便支持多核心,也无法避免多个线程同时访问同一个变量,更何况,这还是忙碌等待(Busy-looping)范式,这样的设计难以降低应用程序的功耗。

为了彻底解决这个问题,Arduino现在要添加多任务处理功能,其目标是要定义一个能够移植到所有架构的标准化API,而这将能简化多任务处理,使得所有Arduino开发者都能简单地运用。目前官方在GitHub上进行多任务处理的讨论,并且分享API提案,号召社群共同实例。