Jump to content

Протопоток

Протопоток это механизм параллельного программирования с низкими издержками .

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

Протопотоки используются для реализации невытесняемой формы параллелизма, известной как кооперативная многозадачность , и, следовательно, не требуют переключения контекста при переходе к другому потоку. Внутри протопотока передача данных осуществляется за счет использования устройства Даффа внутри функции потока и внешней переменной, используемой в операторе переключения . Это позволяет перейти (возобновить) выход из вывода при другом вызове функции. Чтобы заблокировать потоки, эти выходы могут быть защищены условием , чтобы последовательные вызовы одной и той же функции давали результат, если условие защиты не истинно.

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

Том Дафф , известный своими устройствами , сказал следующее о недостатках метода: «Похожий трюк для конечных автоматов, управляемых прерываниями, который слишком ужасен, чтобы в него вдаваться. [...] Я никогда не думал, что это адекватный общий подход. реализация сопрограммы целевого назначения, поскольку нелегко иметь несколько одновременных активаций сопрограммы, и с помощью этого метода невозможно заставить сопрограммы отказаться от управления где-либо, кроме своей процедуры верхнего уровня. Простая библиотека переключения стека на ассемблере позволяет вам это сделать. и то и другое». [2]

Концепция протонити была разработана Адамом Данкелсом и Оливером Шмидтом. [3] на основе предыдущей работы Саймона Тэтэма [4] и Том Дафф . [2]

См. также

[ редактировать ]
  1. ^ А. Данкелс, О. Шмидт, Т. Фойгт и М. Али, Протопотоки: упрощение событийно-ориентированного программирования встраиваемых систем с ограничением памяти , Proc. ACM SenSys , Боулдер, Колорадо, США, ноябрь 2006 г. ( PDF , слайды презентации )
  2. ^ Jump up to: а б «Мозговой вагон» Сопрограммы на C» .
  3. ^ Адам Данкелс. «Протопотоки — легкие, бесстековые потоки в C» . Dunkels.com . Проверено 21 апреля 2017 г.
  4. ^ «Сопрограммы в C» .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 0afec4f924b498b5ef3071a3fbd2557d__1637555160
URL1:https://arc.ask3.ru/arc/aa/0a/7d/0afec4f924b498b5ef3071a3fbd2557d.html
Заголовок, (Title) документа по адресу, URL1:
Protothread - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)