Добавить новость
ВСЕ новости СЕГОДНЯ
RSS.+ — история VIP в новостях News24 с календарным архивом. Все самые быстрые 24/7 новости в ежеминутном тематическом обновлении Life24 — на русском, и не только + Today24, а также тексты с озвучкой — в авторском разделе #123ru.net
Ria.city

Эволюция подходов к написанию корутин от Си до С++20. Часть 2. Переходим от без стековых сопрограмм к стековым

Habr.com
33

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

Для начала вспомним сопрограмму для вычисления чисел Фибоначчи, рассмотренную в предыдущей статье. Для её корректной все переменные, необходимые для работы алгоритма, а также состояние выполнения сопрограммы приходилось хранить в отдельной структуре, передаваемой сопрограмме в качестве параметра. Теперь я хочу избавиться от этой структуры и хранить состояние корутины при помощи локальных переменных, как это делается в обычных функциях. Функции хранят локальные переменные в стеке, следовательно, нам также нужен стек.

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

Однако, использовать стек как это делается в обычных функциях мы не можем из-за того, что сопрограмма должна приостанавливать свое выполнение и передавать управление вызывающему коду, а при повторном вызове продолжать свою работу. 

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

Читать далее


Все новости по теме на сегодня

20 в новостях



Музыкальные новости


Все новости 24/7






Общество

Все общество

Бизнес

Культура

Спорт

Политика

Авторы

Новости тенниса



Rss.Plus — реально независимые новости по темам (энциклопедический систематизированный навигатор "Википедия новостей 24/7" c ежеминутным тематическим мониторингом интернет-пространства) в форме аполитичного просветительского интернет-журнала на русском языке, без цензуры, на многоязычной международной веб-платформе 103news.com в содружестве с более чем 20 000 источников информации во всём мире, сайтом News-Life.pro, глобальными гео-проектами Ria.City и Moscow.Media под патронажем Russia24.pro с уникальным персонифицированным новостным разделом "Региональная власть РФ" без купюр и модерации, а также "VIP-скандалы" в двух цветовых вариантах "День - Ночь" (кнопка справа вверху). Эти новости увидят Ваши внуки (наша система обеспечивает вечное хранение опубликованной информации 24/7). Будьте честными сегодня, чтобы было не стыдно завтра.

Опубликовать свою новость в любом городе и регионе, а также на любом языке мира можно мгновенно — здесь


Ria.city
Новости России
Экология в России и мире
Спорт в России и мире
Moscow.media
Новости Крыма на Sevpoisk.ru
Губернаторы России

Все города России от А до Я

Персональные новости

BigPot.News — быстрые и самые свежие тематические новости об известных личностях в России, в Украине, в Беларусии, в Казахстане и за их пределами в календарном формате 24/7 на основе авторской технологичной информационно-поисковой системы Smi24.net с элементами искусственного интеллекта, гео-отбора и возможностью мгновенной публикации авторского контента в категориях News и Life в режиме Free Public



Больше новостей СЕГОДНЯ


RSS.plus — СРОЧНЫЕ новости. Неоспоримое преимущество RSS.plus — максимальная скорость публикаций 24/7. Быстрее нас, СЕЙЧАС, лишь только — ВЕТЕР Сайт создан под патронажем Россия24.pro — непрерывные новости из регионов 24/7 на русском + новости Москвы от Moscow.Media и мировые новости от Smi24.net и партнёров в календарном формате (вчера, сегодня и сейчас) совместно с 123ru.net и платформой СМИ24.net по технологии 103 NEWS

Опубликовать свою новость в любом городе и регионе, а также на любом языке мира можно мгновенно — здесь







Rss.plus