Протопоток

Материал из Весельчак У
Перейти к: навигация, поиск

П. - это реализация простейших потоков с кооперативной многозадачностью.

Использование П. позволяет перейти от автоматной модели реализации алгоритмов к модели взаимодействующих потоков инструкций. При этом программа, реализованная с использованием П., выглядит структурированной гораздо лучше, чем эта же программа, реализованная в автоматном стиле.

В частности, П. нашли широкое применение при реализации коммуникационных протоколов, например, стека TCP/IP или протокола для обмена данными с беспроводными датчиками.

Известная реализация П. на языке C использует машину Даффа для управления внутренними состояниями. Машина Даффа реализована в виде набора макросов C и не видна в коде программы, поэтому код получается простым и компактным.

К недостаткам П. можно отнести запрет на использование стека для размещения в нем локальных переменных функции, реализующей поток. Однако из этого недостатка вытекает также их достоинство: поскольку стек не используется, оперативная память расходуется очень экономно, при этом не требуется выделять пространство под стек отдельно для каждого потока. Это достоинство может стать решающим при использовании микроконтроллеров с объемом ОЗУ, исчисляемым несколькими десятками или сотнями байт.



Литература:

Adam Dunkels, Oliver Schmidt, Thiemo Voigt. Using Protothreads for Sensor Node Programming.

Adam Dunkels, Oliver Schmidt, Thiemo Voigt, and Muneeb Ali. Protothreads: Simplifying Event-Driven Programming of Memory-Constrained Embedded Systems.