物联网与嵌入式系统中使用协程的异步编程综述
软件工程
2019-06-11 v1 编程语言
摘要
许多物联网与嵌入式项目是事件驱动的,因此需要异步与并发编程。C++20 的当前提案表明协程将获得原生语言支持。对嵌入式系统开发中协程的当前使用情况进行调研正逢其时。本文调查了在资源受限平台上使用或描述协程的现有研究。从以下方面对现有研究进行分析:软件平台、硬件平台及其能力;用例与预期收益;以及用于协程的应用程序编程接口设计。我们进行了系统映射研究,以筛选 2007 至 2018 年间发表的、包含资源受限平台上协程应用原创研究的研究文献。初始的 566 篇候选论文在应用过滤条件后仅剩 35 篇,由此揭示出如下分类。35 项研究中有 22 项使用了 C 与 C++ 编程语言。就硬件而言,16 项研究使用了 8 位或 16 位处理器,而 13 项使用了 32 位处理器。四种最常见的用例分别是并发(17 篇)、网络通信(15 篇)、传感器读取(9 篇)与数据流(7 篇)。主要的预期收益为代码风格与简洁性(12 篇)、调度(9 篇)与效率(8 篇)。实现协程的技术五花八门,包括原生宏、额外的工具链步骤、新的语言特性以及不可移植的汇编语言。我们得出结论:资源受限设备对协程存在广泛需求。我们的发现表明,对 C++ 中形式化、稳定且受良好支持的协程实现存在显著需求,其设计应考量资源受限设备的特殊需要,并进一步表明此类实现将带来专属于此类设备的益处。
引用
@article{arxiv.1906.00367,
title = {A Survey of Asynchronous Programming Using Coroutines in the Internet of Things and Embedded Systems},
author = {Bruce Belson and Jason Holdsworth and Wei Xiang and Bronson Philippa},
journal= {arXiv preprint arXiv:1906.00367},
year = {2019}
}
备注
22 pages, 8 figures, to be published in ACM Transactions on Embedded Computing Systems (TECS)