Протопоток
П. - это реализация простейших потоков с кооперативной многозадачностью.
Использование П. позволяет перейти от автоматной модели реализации алгоритмов к модели взаимодействующих потоков инструкций. При этом программа, реализованная с использованием П., выглядит структурированной гораздо лучше, чем эта же программа, реализованная в автоматном стиле.
В частности, П. нашли широкое применение при реализации коммуникационных протоколов, например, стека TCP/IP или протокола для обмена данными с беспроводными датчиками.
Известная реализация П. на языке C использует машину Даффа для управления внутренними состояниями. Машина Даффа реализована в виде набора макросов C и не видна в коде программы, поэтому код получается простым и компактным.
К недостаткам П. можно отнести запрет на использование стека для размещения в нем локальных переменных функции, реализующей поток. Однако из этого недостатка вытекает также их достоинство: поскольку стек не используется, оперативная память расходуется очень экономно, при этом не требуется выделять пространство под стек отдельно для каждого потока. Это достоинство может стать решающим при использовании микроконтроллеров с объемом ОЗУ, исчисляемым несколькими десятками или сотнями байт.
Литература:
Adam Dunkels, Oliver Schmidt, Thiemo Voigt. Using Protothreads for Sensor Node Programming.