<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" >

  <channel>
    <title><![CDATA[Статьи]]></title>
    <link>https://habr.com/ru/users/andrewdeveloper/publications/articles/</link>
    <description><![CDATA[Хабр: статьи пользователя andrewdeveloper]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Sat, 02 May 2026 15:12:52 GMT</pubDate>
    
    
      <image>
        <link>https://habr.com/ru/</link>
        <url>https://habrastorage.org/webt/ym/el/wk/ymelwk3zy1gawz4nkejl_-ammtc.png</url>
        <title>Хабр</title>
      </image>
    

    
      
        
    
    <item>
      <title><![CDATA[Эволюция подходов к написанию корутин от Си до С++20. Часть 3. Использование сопрограмм при обработке событий в Linux]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/971078/</guid>
      <link>https://habr.com/ru/articles/971078/?utm_campaign=971078&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/dc6/16d/1ee/dc616d1eec23cfadda77d0c62b802242.jpeg" /><p>В <a href="https://habr.com/ru/articles/961852/" rel="noopener noreferrer nofollow">предыдущей</a> статье я рассматривал различные способы организации стековых корутин в языке Си. Эти сопрограммы имели чисто учебное значение так как вряд ли кто-то будет создавать генераторы последовательностей при помощи сопрограмм. Сегодня рассмотрим как писать стектовые корутины на С++  и создадим на их основе tcp сервер, обрабатывающий запросы от клиентов на основе опроса событий с использованием API мультиплексированного ввода-вывода epoll. Данная тема, на мой взгляд, является ключевой для понимания того, как функционируют современные серверные приложения, написанные при помощи таких библиотек как Boost Asio.</p> <a href="https://habr.com/ru/articles/971078/?utm_campaign=971078&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sun, 07 Dec 2025 20:59:27 GMT</pubDate>
      <dc:creator><![CDATA[AndrewDeveloper]]></dc:creator>
      <category><![CDATA[C++]]></category><category><![CDATA[Linux]]></category><category><![CDATA[*nix]]></category><category><![CDATA[Системное программирование]]></category><category><![CDATA[Программирование]]></category>
      <category><![CDATA[обработка событий]]></category><category><![CDATA[корутина]]></category><category><![CDATA[неблокирующий ввод вывод]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Эволюция подходов к написанию корутин от Си до С++20. Часть 2. Переходим от бесстековых сопрограмм к стековым]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/961852/</guid>
      <link>https://habr.com/ru/articles/961852/?utm_campaign=961852&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/184/dd8/f81/184dd8f818d0eba316741bcc30d258d5.jpeg" /><p>В <a href="https://habr.com/ru/articles/954168/" rel="noopener noreferrer nofollow">прошлой</a> статье был рассмотрен процесс создания без стековых сопрограмм на основе библиотеки прото потоков. При этом вся работа по хранению состояния сопрограммы и сохранению ее параметров полностью ложится на плечи программиста. В данной статье я хочу рассказать о том, как можно автоматизировать выполнение этих задач при помощи стековых корутин, рассмотрю 3 способа передачи управления от одной сопрограммы к другой, и опишу с&nbsp; какими проблемами приходиться сталкиваться при создании стековых корутин. Продолжим писать на языке Си и добавим ассемблер.</p><p>Для начала вспомним сопрограмму для вычисления чисел Фибоначчи, рассмотренную в предыдущей статье. Для её корректной все переменные, необходимые для работы алгоритма, а также состояние выполнения сопрограммы приходилось хранить в отдельной структуре, передаваемой сопрограмме в качестве параметра. Теперь я хочу избавиться от этой структуры и хранить состояние корутины при помощи локальных переменных, как это делается в обычных функциях. Функции хранят локальные переменные в стеке, следовательно, нам также нужен стек.</p><p>Под обычной я подразумеваю функцию, определённую синтаксисом языка, с указанием возвращаемого типа, имени функции, а также её параметров.</p><p>Однако, использовать стек как это делается в обычных функциях мы не можем из-за того, что сопрограмма должна приостанавливать свое выполнение и передавать управление вызывающему коду, а при повторном вызове продолжать свою работу.&nbsp;</p><p>Обычная функция в Си передает управление вызывающему коду при помощи оператора return. При этом область стековой памяти, хранящая локальные переменные, больше не принадлежит функции.&nbsp;</p> <a href="https://habr.com/ru/articles/961852/?utm_campaign=961852&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 07 Nov 2025 20:55:58 GMT</pubDate>
      <dc:creator><![CDATA[AndrewDeveloper]]></dc:creator>
      <category><![CDATA[C]]></category><category><![CDATA[*nix]]></category><category><![CDATA[Assembler]]></category>
      <category><![CDATA[стековая корутина]]></category><category><![CDATA[продолжение]]></category><category><![CDATA[переключение контекста]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Эволюция подходов к написанию корутин от Си до С++20. Часть 1. Функция+макросы=корутина]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/954168/</guid>
      <link>https://habr.com/ru/articles/954168/?utm_campaign=954168&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/f1c/289/42e/f1c28942e4cdb49aed440c91397dd833.jpg" /><p>Когда речь заходит о корутинах (сопрограммах) на С++, большинство программистов вспоминает фреймворк coroutine_ts, появившийся в стандарте С++20. Многие даже не догадываются о том, что писать корутины можно было задолго до появления упомянутого стандарта. При этом можно было использовать не только С++, но и Си. Данной статьей я открываю серию, в которой хочу описать свой личный опыт изучения корутин и привести примеры их  использования. Надеюсь мои статьи помогут начинающим разобраться в этой сложной и интересной теме. </p> <a href="https://habr.com/ru/articles/954168/?utm_campaign=954168&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 07 Oct 2025 10:16:52 GMT</pubDate>
      <dc:creator><![CDATA[AndrewDeveloper]]></dc:creator>
      <category><![CDATA[C]]></category><category><![CDATA[C++]]></category><category><![CDATA[Linux]]></category>
      <category><![CDATA[корутины]]></category><category><![CDATA[кооперативная многозадачность]]></category><category><![CDATA[протопотоки]]></category>
    </item>
  

  

  

	
  

  

  

      

      

      

    
  </channel>
</rss>
