Протопоток — единица программной обработки, обеспечиваемая особыми программными средствами, позволяющими не задействовать механизмы потоков операционной системы, одна из форм реализации сопрограмм.

Работая как «легковесные» потоки, не использующие стек, протопотоки обеспечивают блокирующий контекст ценой расхода считанных байтов памяти на один поток. Из-за того, что протопотоки не используют стек, приходится использовать глобальные переменные для сохранения значений при переключении контекста[1]. Протопотоки невытесняемы, поэтому переключение контекста возможно только на блокирующих операциях.

Концепцию протопотоков разработали Адам Данкелс и Оливер Шмидт[2]. Реализовано несколько различных библиотек протопотоков для Си и C++.

Примечания править

  1. A. Dunkels, O. Schmidt, T. Voigt, and M. Ali, Protothreads: Simplifying Event-Driven Programming of Memory-Constrained Embedded Systems, Proc. ACM SenSys, Boulder, CO, USA, Nov 2006. (PDF Архивная копия от 28 июля 2020 на Wayback Machine, Presentation slides Архивная копия от 28 июля 2020 на Wayback Machine)
  2. Adam Dunkels' website. Дата обращения: 10 сентября 2016. Архивировано 9 декабря 2019 года.