skip to main content
research-article

A Survey of Asynchronous Programming Using Coroutines in the Internet of Things and Embedded Systems

Published:05 June 2019Publication History
Skip Abstract Section

Abstract

Many Internet of Things and embedded projects are event driven, and therefore require asynchronous and concurrent programming. Current proposals for C++20 suggest that coroutines will have native language support. It is timely to survey the current use of coroutines in embedded systems development. This article investigates existing research which uses or describes coroutines on resource-constrained platforms. The existing research is analysed with regard to: software platform, hardware platform, and capacity; use cases and intended benefits; and the application programming interface design used for coroutines. A systematic mapping study was performed, to select studies published between 2007 and 2018 which contained original research into the application of coroutines on resource-constrained platforms. An initial set of 566 candidate papers, collated from on-line databases, were reduced to only 35 after filters were applied, revealing the following taxonomy. The C 8 C++ programming languages were used by 22 studies out of 35. As regards hardware, 16 studies used 8- or 16-bit processors while 13 used 32-bit processors. The four most common use cases were concurrency (17 papers), network communication (15), sensor readings (9), and data flow (7). The leading intended benefits were code style and simplicity (12 papers), scheduling (9), and efficiency (8). A wide variety of techniques have been used to implement coroutines, including native macros, additional tool chain steps, new language features, and non-portable assembly language. We conclude that there is widespread demand for coroutines on resource-constrained devices. Our findings suggest that there is significant demand for a formalised, stable, well-supported implementation of coroutines in C++, designed with consideration of the special needs of resource-constrained devices, and further that such an implementation would bring benefits specific to such devices.

Skip Supplemental Material Section

Supplemental Material

References

  1. Ala Al-Fuqaha, Mohsen Guizani, Mehdi Mohammadi, Mohammed Aledhari, and Moussa Ayyash. 2015. Internet of Things: A survey on enabling technologies, protocols, and applications. IEEE Communications Surveys and Tutorials 17, 4 (2015), 2347--2376. arxiv:arXiv:1011.1669v3.Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Mariano Alvira and Taylor Barton. 2013. Small and Inexpensive Single-Board Computer for Autonomous Sailboat Control. Springer, Berlin, 105--116.Google ScholarGoogle Scholar
  3. Sidharta Andalam, Partha S. Roop, Alain Girault, and Claus Traulsen. 2014. A predictable framework for safety-critical embedded systems. IEEE Trans. Comput. 63, 7 (2014), 1600--1612. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Michael P. Andersen, Gabe Fierro, and David E. Culler. 2016. System design for a synergistic, low power mote/BLE embedded platform. In 2016 15th ACM/IEEE International Conference on Information Processing in Sensor Networks (IPSN). IEEE, Vienna, Austria, 1--12. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Michael P. Andersen, Gabe Fierro, and David E. Culler. 2017. Enabling synergy in IoT: Platform to service and beyond. Journal of Network and Computer Applications 81 (2017), 96--110. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. AspenCore Global Media. 2017. 2017 Embedded Markets Study. http://m.eet.com/media/1246048/2017-embedded-market-study.pdf.Google ScholarGoogle Scholar
  7. Luigi Atzori, Antonio Iera, and Giacomo Morabito. 2010. The Internet of Things: A survey. Computer Networks 54, 15 (2010), 2787--2805. arxiv:arXiv:1011.1669v3. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Richard Barry. 2018. The FreeRTOS Kernel. https://www.freertos.org/.Google ScholarGoogle Scholar
  9. Alexandre Bergel, William Harrison, Vinny Cahill, and Siobhán Clarke. 2011. FlowTalk: Language support for long-latency operations in embedded devices. IEEE Transactions on Software Engineering 37, 4 (2011), 526--543. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Gavin Bierman, Claudio Russo, Geoffrey Mainland, Erik Meijer, and Mads Torgersen. 2012. Pause ‘n’ play: Formalizing asynchronous C sharp. In ECOOP 2012 -- Object-Oriented Programming, James Noble (Ed.). Springer Berlin, 233--257. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Nicholas M. Boers, Paweł Gburzyński, Ioanis Nikolaidis, and Włodek Olesiński. 2010. Developing wireless sensor network applications in a virtual environment. Telecommunication Systems 45, 2--3 (2010), 165--176. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Pearl Brereton, Barbara A. Kitchenham, David Budgen, Mark Turner, and Mohamed Khalil. 2007. Lessons from applying the systematic literature review process within the software engineering domain. Journal of Systems and Software 80, 4 (2007), 571--583. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Etienne Brodu, Stéphane Frénot, and Frédéric Oblé. 2015. Toward automatic update from callbacks to promises. In Proceedings of the 1st Workshop on All-Web Real-Time Systems - AWeS’15. ACM, New York, 1--8. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. David L. Clark. 2009. Powering intelligent instruments with Lua scripting. In 2009 IEEE AUTOTESTCON. IEEE, 101--106.Google ScholarGoogle Scholar
  15. Marcelo Cohen, Thiago Ponte, Silvana Rossetto, and Noemi Rodriguez. 2007. Using coroutines for RPC in sensor networks. In 2007 IEEE International Parallel and Distributed Processing Symposium. 1--8.Google ScholarGoogle ScholarCross RefCross Ref
  16. Melvin E. Conway. 1963. Design of a separable transition-diagram compiler. Commun. ACM 6, 7 (July 1963), 396--408. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Ana Lúcia De Moura, Noemi Rodriguez, and Roberto Ierusalimschy. 2004. Coroutines in Lua. Journal of Universal Computer Science 10, 7 (2004), 910--925.Google ScholarGoogle Scholar
  18. Tom Duff. 1988. Duff’s Device. https://groups.google.com/forum/#!original/comp.lang.c/sWJtHn6sVps/ESTEdYEpeLsJ.Google ScholarGoogle Scholar
  19. Adam Dunkels. 2005. About protothreads. http://dunkels.com/adam/pt/about.html.Google ScholarGoogle Scholar
  20. A. Dunkels, B. Gronvall, and T. Voigt. 2004. Contiki—a lightweight and flexible operating system for tiny networked sensors. In 29th Annual IEEE International Conference on Local Computer Networks. IEEE (Comput. Soc.), 455--462. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Adam Dunkels, Oliver Schmidt, Thiemo Voigt, and Muneeb Ali. 2006. Protothreads: Simplifying event-driven programming of memory-constrained embedded systems. In Proceedings of the 4th International Conference on Embedded Networked Sensor Systems. ACM, New York, 29--42. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Caglar Durmaz, Moharram Challenger, Orhan Dagdeviren, and Geylani Kardas. 2017. Modelling contiki-based IoT systems. In 6th Symposium on Languages, Applications and Technologies (SLATE 2017) (OpenAccess Series in Informatics (OASIcs)), Ricardo Queirós, Mário Pinto, Alberto Simões, José Paulo Leal, and Maria João Varanda (Eds.), Vol. 56. Schloss Dagstuhl--Leibniz-Zentrum fuer Informatik, Dagstuhl, Germany, 5:1--5:13.Google ScholarGoogle Scholar
  23. ECMA. 2017. ECMAScript Latest Draft (ECMA-262) Async Function Definitions. https://tc39.github.io/ecma262/#sec-async-function-definitions.Google ScholarGoogle Scholar
  24. Jonathan Edwards. 2009. Coherent reaction. In Proceeding of the 24th ACM SIGPLAN Conference Companion on Object Oriented Programming Systems Languages and Applications - OOPSLA’09. ACM, New York, 925. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Atis Elsts, George Oikonomou, Xenofon Fafoutis, and Robert Piechocki. 2017. Internet of Things for smart homes: Lessons learned from the SPHERE case study. In 2017 Global Internet of Things Summit (GIoTS). 1--6.Google ScholarGoogle Scholar
  26. Ralf S. Engelschall. 2000. Portable multithreading—The signal stack trick for user-space thread creation. In USENIX Annual Technical Conference, General Track. https://dl.acm.org/citation.cfm?id=1267744 Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. L. Evers, P. J. M. Havinga, J. Kuper, M. E. M. Lijding, and N. Meratnia. 2007. SensorScheme: Supply chain management automation using wireless sensor networks. In 2007 IEEE Conference on Emerging Technologies and Factory Automation (EFTA 2007). 448--455.Google ScholarGoogle ScholarCross RefCross Ref
  28. Rene Fritzsche and Christian Siemers. 2010. Scheduling of time enhanced C (Tec). In 2010 World Automation Congress. 1--6.Google ScholarGoogle Scholar
  29. David Gay, Philip Levis, Robert von Behren, Matt Welsh, Eric Brewer, and David Culler. 2003. The nesC language: A holistic approach to networked embedded systems. In Proceedings of the ACM SIGPLAN 2003 Conference on Programming Language Design and Implementation - PLDI’03. ACM, New York, 1--11. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Damien George. 2014. MicroPython - Python for microcontrollers. http://micropython.org/.Google ScholarGoogle Scholar
  31. Damien P. George and Paul Sokolovsky. 2014. General information about the ESP8266 port -- MicroPython 1.9.4 documentation. http://docs.micropython.org/en/latest/esp8266/esp8266/general.html.Google ScholarGoogle Scholar
  32. R. Glistvain and M. Aboelaze. 2010. Romantiki OS - A single stack multitasking operating system for resource limited embedded devices. In 7th International Conference on Informatics and Systems (INFOS’10). 1--8. https://ieeexplore.ieee.org/document/5461735.Google ScholarGoogle Scholar
  33. Lois Goldthwaite. 2006. Technical report on C++ performance. ISO/IEC PDTR 18015 (2006).Google ScholarGoogle Scholar
  34. Nat Goodspeed. 2014. Stackful Coroutines and Stackless Resumable Functions. Technical Report. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4232.pdf.Google ScholarGoogle Scholar
  35. Jayavardhana Gubbi, Rajkumar Buyya, Slaven Marusic, and Marimuthu Palaniswami. 2013. Internet of Things (IoT): A vision, architectural elements, and future directions. Future Generation Computer Systems 29, 7 (2013), 1645--1660. arxiv:1207.0203. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. R. K. Gupta, C. N. Coelho Jr., and G. De Micheli. 1992. Synthesis and simulation of digital systems containing interacting hardware and software components. In 29th ACM/IEEE Design Automation Conference (DAC’92). IEEE Computer Society Press, Los Alamitos, CA, 225--230. http://dl.acm.org/citation.cfm?id=113938.149413 Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. Philipp Haller and Jason Zaugg. 2016. SIP-22 - Async - Scala Documentation. http://docs.scala-lang.org/sips/pending/async.html.Google ScholarGoogle Scholar
  38. Ralph Hempel. 2008. Porting Lua to a microcontroller. Lua Programming Gems (2008).Google ScholarGoogle Scholar
  39. Dominic Herity. 2015. Modern C++ in embedded systems—Part 1: Myth and Reality | Embedded. https://www.embedded.com/design/programming-languages-and-tools/4438660/1/Modern-C--in-embedded-systems---Part-1--Myth-and-Reality.Google ScholarGoogle Scholar
  40. R. Inam, J. Mäki-Turja, M Sjödin, S. M. H. Ashjaei, and S. Afshar. 2011. Support for hierarchical scheduling in FreeRTOS. In ETFA2011. 1--10.Google ScholarGoogle Scholar
  41. ISO/IEC. 2017. N4680 Programming Languages - C++ Extensions for Library Fundamentals. (2017). http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4680.pdf.Google ScholarGoogle Scholar
  42. Pekka Jääskeläinen, Pertti Kellomäki, Jarmo Takala, Heikki Kultala, and Mikael Lepistö. 2008. Reducing context switch overhead with compiler-assisted threading. In 2008 IEEE/IFIP International Conference on Embedded and Ubiquitous Computing, Vol. 2. 461--466. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. Erwan Jahier. 2016. RDBG: A reactive programs extensible debugger. In Proceedings of the 19th International Workshop on Software and Compilers for Embedded Systems (SCOPES’16), Sander Stuijk (Ed.). ACM, New York, NY, USA, 116--125. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. Rubem Kalebe, Gustavo Girao, and Itamir Filho. 2017. A library for scheduling lightweight threads in Internet of Things microcontrollers. In 2017 International Conference on Computing Networking and Informatics (ICCNI). IEEE, 1--7.Google ScholarGoogle ScholarCross RefCross Ref
  45. Kennedy Kambona, Elisa Gonzalez Boix, and Wolfgang De Meuter. 2013. An evaluation of reactive programming and promises for structuring collaborative web applications. In 7th Workshop on Dynamic Languages and Applications (DYLA’13). ACM, New York, 3:1--3:9. Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. Marcin Karpinski and Vinny Cahill. 2007. High-level application development is realistic for wireless sensor networks. In 2007 4th Annual IEEE Communications Society Conference on Sensor, Mesh and Ad Hoc Communications and Networks. 610--619.Google ScholarGoogle ScholarCross RefCross Ref
  47. Meysam Khezri, Mehdi Agha Sarram, and Fazlollah Adibniya. 2008. Simplifying concurrent programming of networked embedded systems. In 2008 IEEE International Symposium on Parallel and Distributed Processing with Applications. 993--998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. Barbara Kitchenham. 2004. Procedures for Performing Systematic Reviews. Technical Report TR/SE-0401. 28 pages.Google ScholarGoogle Scholar
  49. Barbara Kitchenham and Stuart Charters. 2007. Guidelines for Performing Systematic Literature Reviews in Software Engineering Version 2.3. Technical Report. arxiv:1304.1186Google ScholarGoogle Scholar
  50. Barbara A. Kitchenham, David Budgen, and O. Pearl Brereton. 2011. Using mapping studies as the basis for further research - A participant-observer case study. Information and Software Technology 53, 6 (2011), 638--651. Google ScholarGoogle ScholarDigital LibraryDigital Library
  51. Donald E. Knuth. 1997. The art of computer programming, Vol. 1: Fundamental algorithms (3rd. ed.). (1997). Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. Patrick Kugler, Philipp Nordhus, and Bjoern Eskofier. 2013. Shimmer, Cooja and Contiki: A new toolset for the simulation of on-node signal processing algorithms. In 2013 IEEE International Conference on Body Sensor Networks. 1--6.Google ScholarGoogle ScholarCross RefCross Ref
  53. Nagendra J. Kumar, Vasanth Asokan, Siddhartha Shivshankar, and Alexander G. Dean. 2007. Efficient software implementation of embedded communication protocol controllers using asynchronous software thread integration with time- and space-efficient procedure calls. ACM Transactions on Embedded Computing Systems 6, 1 (Feb 2007). Google ScholarGoogle ScholarDigital LibraryDigital Library
  54. Philip Levis and David Culler. 2002. Mate: A tiny virtual machine for sensor networks. ACM SIGPLAN Notices 37, 10 (2002), 85--95. Google ScholarGoogle ScholarDigital LibraryDigital Library
  55. P. Levis, S. Madden, J. Polastre, R. Szewczyk, K. Whitehouse, A. Woo, D. Gay, J. Hill, M. Welsh, E. Brewer, and D. Culler. 2005. TinyOS: An Operating System for Sensor Networks. Springer Berlin, 115--148.Google ScholarGoogle Scholar
  56. B. Liskov and L. Shrira. 1988. Promises: Linguistic support for efficient asynchronous procedure calls in distributed systems. ACM SIGPLAN Notices 23, 7 (1988), 260--267. Google ScholarGoogle ScholarDigital LibraryDigital Library
  57. Weichen Liu, Jiang Xu, Jogesh K. Muppala, Wei Zhang, Xiaowen Wu, Yaoyao Ye, and Wei Zhang. 2011. Coroutine-based synthesis of efficient embedded software from SystemC models. IEEE Embedded Systems Letters 3, 1 (2011), 46--49. Google ScholarGoogle ScholarDigital LibraryDigital Library
  58. LLVM Project. 2018. Download LLVM releases. http://releases.llvm.org/.Google ScholarGoogle Scholar
  59. Daniel Lohmann, Olaf Spinczyk, Wanja Hofer, and Wolfgang Schröder-Preikschat. 2012. The Aspect-Aware Design and Implementation of the CiAO Operating-System Family. Springer, Berlin, 168--215. Google ScholarGoogle ScholarDigital LibraryDigital Library
  60. Magnus Madsen, Ondřej Lhoták, and Frank Tip. 2017. A model for reasoning about JavaScript promises. Proceedings of the ACM on Programming Languages 1, OOPSLA (2017). Google ScholarGoogle ScholarDigital LibraryDigital Library
  61. James Manyika, Michael Chui, Peter Bisson, Jonathan Woetzel, Richard Dobbs, Jacques Bughin, and Dan Aharon. 2015. The Internet of Things: Mapping the value beyond the hype. McKinsey Global InstituteJune (2015), 144. https://www.mckinsey.com//media/McKinsey/Business%20Functions/McKinsey%20Digital/Our%20Insights/The%20Internet%20of%20Things%20The%20value%20of%20digitizing%20the%20physical%20world/The-Internet-of-things-Mapping-the-value-beyond-the-hype.ashx.Google ScholarGoogle Scholar
  62. Christopher D. Marlin. 1979. Coroutines: A Programming Methodology, a Language Design and an Implementation. Number 95 in Lecture Notes in Computer Science. Springer, Berlin, Heidelberg. Google ScholarGoogle ScholarDigital LibraryDigital Library
  63. Erik Meijer. 2010. Reactive extensions (Rx): Curing your asynchronous programming Blues. In ACM SIGPLAN Commercial Users of Functional Programming on - CUFP’10. ACM Press, New York, New York, USA, 1. Google ScholarGoogle ScholarDigital LibraryDigital Library
  64. Microsoft Corporation. 2018. The latest supported Visual C++ downloads. https://support.microsoft.com/en-au/help/2977003/the-latest-supported-visual-c-downloads.Google ScholarGoogle Scholar
  65. Eric Mittelette. 2015. Coroutines in Visual Studio 2015--Update 1--Visual C++ Team Blog. https://blogs.msdn.microsoft.com/vcblog/2015/11/30/coroutines-in-visual-studio-2015-update-1/.Google ScholarGoogle Scholar
  66. Christian Motika and Reinhard von Hanxleden. 2015. Light-weight synchronous Java (SJL): An approach for programming deterministic reactive systems with Java. Computing 97, 3 (2015), 281--307. Google ScholarGoogle ScholarDigital LibraryDigital Library
  67. Peter Niebert and Mathieu Caralp. 2014. Cellular Programming. Springer International Publishing, Cham, 11--22.Google ScholarGoogle Scholar
  68. Uzair A. Noman, Behailu Negash, Amir M. Rahmani, Pasi Liljeberg, and Hannu Tenhunen. 2017. From threads to events: Adapting a lightweight middleware for Contiki OS. In 2017 14th IEEE Annual Consumer Communications and Networking Conference (CCNC). 486--491.Google ScholarGoogle ScholarCross RefCross Ref
  69. Semih Okur, David L. Hartveld, Danny Dig, and Arie van Deursen. 2014. A study and toolkit for asynchronous programming in C#. In 36th International Conference on Software Engineering - ICSE 2014. ACM, New York, 1117--1127. Google ScholarGoogle ScholarDigital LibraryDigital Library
  70. Frank Oldewurtel, Janne Riihijärvi, Krisakorn Rerkrai, and Petri Mähönen. 2009. The RUNES architecture for reconfigurable embedded and sensor networks. In 2009 3rd International Conference on Sensor Technologies and Applications. 109--116. Google ScholarGoogle ScholarDigital LibraryDigital Library
  71. Jonathan Paisley and Joseph Sventek. 2006. Real-time detection of grid bulk transfer traffic. In 2006 IEEE/IFIP Network Operations and Management Symposium NOMS 2006. 66--72.Google ScholarGoogle ScholarCross RefCross Ref
  72. Sihyeong Park, Hyungshin Kim, Soo Yeong Kang, Cheol Hea Koo, and Hyunwoo Joe. 2015. Lua-based virtual machine platform for spacecraft on-board control software. In 2015 IEEE 13th International Conference on Embedded and Ubiquitous Computing. 44--51. Google ScholarGoogle ScholarDigital LibraryDigital Library
  73. Kai Petersen, Robert Feldt, Shahid Mujtaba, and Michael Mattsson. 2008. Systematic mapping studies in software engineering. In 12th International Conference on Evaluation and Assessment in Software Engineering. BCS Learning 8 Development Ltd., 68--77. Google ScholarGoogle ScholarDigital LibraryDigital Library
  74. Kai Petersen, Sairam Vakkalanka, and Ludwik Kuzniarz. 2015. Guidelines for conducting systematic mapping studies in software engineering: An update. Information and Software Technology 64 (2015), 1--18. arxiv:arXiv:1011.1669v3. Google ScholarGoogle ScholarDigital LibraryDigital Library
  75. Till Riedel, Nicolaie Fantana, Adrian Genaid, Dimitar Yordanov, Hedda R. Schmidtke, and Michael Beigl. 2010. Using web service gateways and code generation for sustainable IoT system development. In 2010 Internet of Things (IOT). 1--8.Google ScholarGoogle Scholar
  76. Torvald Riegel. 2015. P0073R0—On unifying the coroutines and resumable functions proposals. (2015). http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0073r0.pdf.Google ScholarGoogle Scholar
  77. Geoff Romer, James Dennett, and Chandler Carruth. 2018. P1063R0—Core Coroutines Making coroutines simpler, faster, and more general. (2018). http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1063r0.pdf.Google ScholarGoogle Scholar
  78. Silvana Rossetto and Noemi Rodriguez. 2006. A cooperative multitasking model for networked sensors. In International Conference on Distributed Computing Systems (2006). Google ScholarGoogle ScholarDigital LibraryDigital Library
  79. Paul H. Schimpf. 2012. Modified protothreads for embedded systems. Journal of Computing Sciences in Colleges 28, 1 (2012), 177--184. http://dl.acm.org/citation.cfm?id=2379703.2379738 Google ScholarGoogle ScholarDigital LibraryDigital Library
  80. S. Sicari, A. Rizzardi, L. A. Grieco, and A. Coen-Porisini. 2015. Security, privacy and trust in Internet of Things: The road ahead. Computer Networks 76 (Jan. 2015), 146--164. arxiv:1404.7799 Google ScholarGoogle ScholarDigital LibraryDigital Library
  81. Ian Skerrett. 2017. IoT Developer Trends 2017 Edition. https://ianskerrett.wordpress.com/2017/04/19/iot-developer-trends-2017-edition/.Google ScholarGoogle Scholar
  82. Vincent St-Amour and Marc Feeley. 2010. PICOBIT: A Compact Scheme System for Microcontrollers. Springer Berlin, 1--17.Google ScholarGoogle Scholar
  83. Bjarne Stroustrup. 1986. An overview of C++. In SIGPLAN Workshop on Object-Oriented Programming (OOPWORK’86). ACM, New York, 7--18. Google ScholarGoogle ScholarDigital LibraryDigital Library
  84. M. Strube, M. Daum, R. Kapitza, F. Villanueva, and F. Dressler. 2010. Dynamic operator replacement in sensor networks. In The 7th IEEE International Conference on Mobile Ad-hoc and Sensor Systems (IEEE MASS 2010). 748--750.Google ScholarGoogle ScholarCross RefCross Ref
  85. E. Susilo, P. Valdastri, A. Menciassi, and P. Dario. 2009. A miniaturized wireless control platform for robotic capsular endoscopy using advanced pseudokernel approach. Sensors and Actuators, A: Physical 156, 1 (2009), 49--58.Google ScholarGoogle Scholar
  86. Don Syme, Tomas Petricek, and Dmitry Lomov. 2011. The Fsharp asynchronous programming model. Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics) 6539 LNCS (2011), 175--189. Google ScholarGoogle ScholarDigital LibraryDigital Library
  87. Simon Tatham. 2000. Coroutines in C. https://www.chiark.greenend.org.uk/ sgtatham/coroutines.html.Google ScholarGoogle Scholar
  88. The Python Software Foundation. 2018. 9. Classes--Python 3.6.4 documentation. https://docs.python.org/3/tutorial/classes.html#generators.Google ScholarGoogle Scholar
  89. C. Tismer. 2000. Continuations and stackless Python. In 8th International Python Conference (2000), 2000--01. https://svn.python.org/www/trunk/pydotorg/workshops/2000-01/proceedings/papers/tismers/spcpaper.doc.Google ScholarGoogle Scholar
  90. Christian Tismer. 2018. About Stackless. https://github.com/stackless-dev/stackless/wiki.Google ScholarGoogle Scholar
  91. Rob van der Meulen. 2017. Gartner Says 8.4 Billion Connected “Things” Will Be in Use in 2017, Up 31 Percent From 2016. http://www.gartner.com/newsroom/id/3598917.Google ScholarGoogle Scholar
  92. Guido van Rossum and Phillip J. Eby. 2005. PEP 342—Coroutines via Enhanced Generators. (2005). https://www.python.org/dev/peps/pep-0342/.Google ScholarGoogle Scholar
  93. Reinhard von Hanxleden. 2009. SyncCharts in C: A proposal for light-weight, deterministic concurrency. In 7th ACM International Conference on Embedded Software. ACM, New York, 225--234. Google ScholarGoogle ScholarDigital LibraryDigital Library
  94. Rolf H. Weber. 2015. Internet of Things: Privacy issues revisited. Computer Law 8 Security Review: The International Journal of Technology Law and Practice 31 (2015), 618--627.Google ScholarGoogle Scholar
  95. Min Yu, SiJi Xiahou, and XinYu Li. 2008. A survey of studying on task scheduling mechanism for TinyOS. 2008 4th International Conference on Wireless Communications, Networking and Mobile Computing (2008), 1--4.Google ScholarGoogle ScholarCross RefCross Ref

Index Terms

  1. A Survey of Asynchronous Programming Using Coroutines in the Internet of Things and Embedded Systems

          Recommendations

          Comments

          Login options

          Check if you have access through your login credentials or your institution to get full access on this article.

          Sign in

          Full Access

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader

          HTML Format

          View this article in HTML Format .

          View HTML Format
          About Cookies On This Site

          We use cookies to ensure that we give you the best experience on our website.

          Learn more

          Got it!