Протопоток — различия между версиями
Dale (обсуждение | вклад) (Новая страница: «'''П.''' - это реализация простейших потоков с [[Кооперативная многозадачность|коопе...») |
RXL (обсуждение | вклад) |
||
Строка 16: | Строка 16: | ||
[http://www.sics.se/~adam/dunkels06protothreads.pdf Adam Dunkels, Oliver Schmidt, Thiemo Voigt, and Muneeb Ali. Protothreads: Simplifying Event-Driven Programming of Memory-Constrained Embedded Systems.] | [http://www.sics.se/~adam/dunkels06protothreads.pdf Adam Dunkels, Oliver Schmidt, Thiemo Voigt, and Muneeb Ali. Protothreads: Simplifying Event-Driven Programming of Memory-Constrained Embedded Systems.] | ||
+ | |||
+ | |||
+ | [[Category:Толковый словарь]] |
Текущая версия на 17:05, 8 февраля 2013
П. - это реализация простейших потоков с кооперативной многозадачностью.
Использование П. позволяет перейти от автоматной модели реализации алгоритмов к модели взаимодействующих потоков инструкций. При этом программа, реализованная с использованием П., выглядит структурированной гораздо лучше, чем эта же программа, реализованная в автоматном стиле.
В частности, П. нашли широкое применение при реализации коммуникационных протоколов, например, стека TCP/IP или протокола для обмена данными с беспроводными датчиками.
Известная реализация П. на языке C использует машину Даффа для управления внутренними состояниями. Машина Даффа реализована в виде набора макросов C и не видна в коде программы, поэтому код получается простым и компактным.
К недостаткам П. можно отнести запрет на использование стека для размещения в нем локальных переменных функции, реализующей поток. Однако из этого недостатка вытекает также их достоинство: поскольку стек не используется, оперативная память расходуется очень экономно, при этом не требуется выделять пространство под стек отдельно для каждого потока. Это достоинство может стать решающим при использовании микроконтроллеров с объемом ОЗУ, исчисляемым несколькими десятками или сотнями байт.
Литература:
Adam Dunkels, Oliver Schmidt, Thiemo Voigt. Using Protothreads for Sensor Node Programming.