home.social

#корутины — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #корутины, aggregated by home.social.

fetched live
  1. Управляемые корутины в TypeScript: как получить контроль над асинхронностью и памятью. Разбираемся во всех аспектах

    Современный JavaScript / TypeScript сегодня, предоставляет мощный инструмент для асинхронного программирования, который знаком каждому - async/await на основе Promise . Он позволяет писать последовательный код и легко обрабатывать ошибки. Однако за простотой скрываются серьёзные ограничения, которые становятся критичными в высоко-нагруженных системах, играх, сложных пользовательских интерфейсах и приложениях, требующих предсказуемой производительности. Представьте себе сервер, обрабатывающий тысячи запросов одновременно. Все они конкурируют за процессорное время. Как гарантировать, что запрос от клиента выполнится раньше, чем фоновая синхронизация? Как отменить долгую операцию, если клиент разорвал соединение? Как избежать пауз сборщика мусора при создании миллионов временных объектов? Нативный async/await не даёт ответов на эти вопросы - он лишь оборачивает асинхронные операции в удобный синтаксис. В этой статье мы разберём, как кооперативные корутины (Coroutines) решают эти задачи на примере моей библиотеки ts-adaptive-coroutines , изучив каждый аспект по кирпичикам, посмотрев на инструмент, который добавляет в TypeScript адаптивные приоритеты, арены памяти, каналы, семафоры и много-поточность.

    habr.com/ru/articles/1074510/

    #программирование #корутины #реализация #объяснение #потоки #арены #синхронизация #typescript #nodejs #react

  2. Корутины на бэкенде: семь ошибок, из‑за которых падает не тот запрос и висят не те задачи

    На демо корутины выглядят почти безошибочно, но под нагрузкой один неверный выбор области, диспетчера или способа обработки исключений быстро превращается в зависшие задачи и падение чужих запросов. Разбираем типичные ошибки Kotlin‑бэкенда и показываем, как сохранить предсказуемое поведение сервиса.

    habr.com/ru/companies/otus/art

    #Kotlin #корутины #Kotlin_Coroutines #структурная_конкурентность #обработка_исключений #отмена_корутин #асинхронное_программирование #Dispatchers #Flow #серверная_разработка

  3. Асинхронный Kotlin. Обзор новинки

    Приветствуем, Хабр. Как знают наши постоянные читатели, в последние пару лет мы регулярно заходим на территорию языка Kotlin. Базовой литературы по Kotlin сейчас достаточно, но сегодня мы хотим презентовать вам новинку для настоящих профессионалов — « Асинхронный Kotlin ». Книга подготовлена Яной Седовой @Ioanna на основе её собственного курса « Kotlin Coroutines & Flow для Android: от основ до production » размещённого на платформе «Степик» Яна Седова активно работает с этой платформой, вот, что она успела на ней разместить .

    habr.com/ru/companies/bhv_publ

    #android #kotlin #корутины #мобильная_разработка

  4. История корутин: появление, развитие, спад и возрождение

    Привет, Хабр! Меня зовут Дмитрий Попов, я Android‑разработчик в ПСБ. В какой‑то момент мне захотелось разобраться — что такое корутина и откуда они вообще взялись. Погрузившись в различные статьи и видео, я узнал много нового, рассказал коллегам внутри команды, а теперь решил рассказать и вам. Все, что важно знать о корутинах, по моему скромному мнению, — в этой статье!

    habr.com/ru/companies/psb/arti

    #корутины #корутины_kotlin #горутины #горутина #eventloop #история_it #история_ит

  5. Пять ошибок начинающих Android‑разработчиков при работе с жизненным циклом

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

    habr.com/ru/companies/otus/art

    #Android #Kotlin #жизненный_цикл_Activity #Fragment #ViewModel #lifecycleScope #утечки_памяти #SavedStateHandle #корутины #Androidразработка

  6. Почему миллион корутин на Rust весит меньше, чем сто тысяч на Python

    Миллион асинхронных задач на Rust спокойно живёт в нескольких сотнях мегабайт. Сто тысяч корутин на Python нередко упираются в память раньше. Дело не в том, что “Rust быстрый, а Python медленный” - дело в том, ГДЕ физически лежит состояние приостановленной задачи. Разбираю, во что превращается ваш async fn после компиляции: стейт-машина на стеке против объекта в куче. Сравниваю модели Rust (Tokio), Python (asyncio), C# и JavaScript - кто аллоцирует на каждый await, а кто нет, и почему это видно на счётчике RAM при 100k задач. Внутри: что генерирует компилятор, куда уезжает состояние между await, stackful против stackless, и что с этим делать сегодня.

    habr.com/ru/articles/1046862/

    #async #await #корутины #Rust #Tokio #asyncio #конкурентность

  7. Kotlin Корутины + БД connection pool. Как не получить каскадное падение

    Почему Dispatchers.IO + Hikari + чуть-чуть лагов БД = каскадная деградация всего сервиса, и как bulkhead-паттерн в одну строку это лечит.

    habr.com/ru/articles/1026058/

    #котлин #корутины #highload #kotlin #coroutines

  8. Laravel + TrueAsync: настоящая конкурентность без Swoole

    В 2025 году в PHP отклонили RFC про нативные корутины. Автор не сдался и продолжил работу - так появился TrueAsync, расширение которое добавляет в PHP настоящую асинхронность без изменений в коде приложения. Я решил запустить на этом Laravel. Фреймворк проектировался под FPM-модель и совершенно не готов к тому что один воркер будет обрабатывать тысячи запросов параллельно. Как это починить без клонирования контейнера, почему PDO Pool даёт настоящую конкурентность которой нет в Swoole, и что получилось в бенчмарке против Octane.

    habr.com/ru/articles/1024762/

    #PHP #laravel #async #корутины #frankenphp #pdo #benchmark

  9. Нити и волокна (Threads & Fibers)

    Всем привет! Меня зовут Сергей и последнее время я занимаюсь backend-разработкой на Scala. Вообще, мой опыт асинхронного программирования на Scala и C# составляет более десяти лет, и за это время сложилось вполне достаточное понимание этой темы. Во всяком случае, тогда мне так казалось… Но недавно в беседе с коллегами обнаружились большие проблемы в моём «понимании», что мотивировало детально разобраться в этом вопросе.

    habr.com/ru/articles/1006576/

    #scala #асинхронность #асинхронное_программирование #потоки #нити #корутины #direct_style #волокна #threads #fibers

  10. Как я пытался внедрить IOCP в libcoro, выгорел на полгода, но вернулся с планом «Б»

    Что делать, если в твоём очередном самописном движке внезапно понадобилась сеть, да ещё и на корутинах из C++ 20, а подходящая библиотека не поддерживает Windows? Правильно - лезть под капот, разбираться что такое epoll , почему он несовместим с IOCP, затем вкатиться в Open Source, сделав огромный PR, выгореть на полгода, чтобы потом вернуться и начать делать нормально. Небольшая история о том, почему первый PR не должен быть огромным и как (не) нужно переписывать сетевую библиотеку.

    habr.com/ru/articles/993666/

    #c++20 #корутины #асинхронный_вводвывод #epoll #iocp #кроссплатформенность

  11. contextvars: почему thread-local сломался в asyncio и как это починили

    В мире потоков всё было просто: threading.local() даёт каждому потоку свои данные. Request ID, текущий пользователь, database connection — положил в thread-local, достал когда нужно. FastAPI, Flask, Django — все так делали. Потом пришёл asyncio, и эта модель сломалась. В одном потоке выполняются тысячи корутин, и thread-local у них общий. Положил request ID в одной корутине — прочитал чужой в другой. contextvars , появившийся в Python 3.7, решает эту проблему, но механика его работы не очевидна. Разберём, почему thread-local не работает в async, как устроены contextvars, и какие паттерны использовать.

    habr.com/ru/companies/otus/art

    #python #asyncio #контекст_выполнения #корутины

  12. Управление потоком в Kotlin Flow

    Поколение большого пальца – вот как нас называли. Какие глубокомысленные переписки мы ухитрялись вести на кнопочных телефонах, набирая текст SMS большим пальцем асинхронно с конспектированием лекций… Когда пользователь печатает или вообще взаимодействует с приложением слишком быстро, возникает опасность гиперотзывчивости. Приложение вынуждено реагировать на всякий чих, а в таких случаях, как известно, не наздравствуешься. Естественно, в Kotlin Flow, где данные текут непрерывным потоком и легко провоцируют избыточные реакции, эта проблема стоит особенно остро. Например, если мы построим на Flow систему автодополнений, то увидим что-то такое:

    habr.com/ru/articles/970236/

    #асинхронное_программирование #потоки_данных #flow #корутины #kotlin #kotlin_coroutines

  13. Агент на Kotlin без фреймворков

    Статья является продолжением Пишем агента на Kotlin: KOSMOS , но может читаться независимо. Мотивация к написанию — сохранить читателю время на возьню с фреймворками для решения относительно простой задачи. Автор подразумевает у читателя теоретическое понимание того, что такое агент. Иначе лучше прочесть хотя бы начало предыдущей части . В статье хочу показать, как самостоятельно написать аналог Koog или Langchain4j . У вас не будет всех их фичей, зато будет очень простая и расширяемая система.

    habr.com/ru/articles/958468/

    #java #kotlin #llm #агент #рефакторинг #иммутабельность #граф #rag #корутины #ииагенты

  14. Android для новичков: как не наломать дров с корутинами и какие привычки оставить в прошлом

    Когда только начинаешь разрабатывать под Android, самые неприятные баги появляются не из-за опечаток, а из-за систематических ошибок. Хардкод строк и цветов, корутины, которые живут сами по себе, попытки писать Compose по старинке, как старые view — всё это превращается в технический долг, который мешает развивать продукт. Знание этих ошибок помогает писать более надёжный код, который не ломается при локализации, смене темы или добавлении новых экранов. К тому же многие из этих проблем часто всплывают на собеседованиях. В статье покажу, почему ошибки превращаются в реальные проблемы, как их обнаружить и исправить. Исправить ошибки в Android-разработке

    habr.com/ru/companies/netology

    #android_разработка #программирование_на_android #начинающие_разработчики #новички_в_android #советы_начинающим #android_development #корутины #хардкод #composable #ошибки_новичков

  15. О времени, сложности и мотивации: финал

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

    habr.com/ru/articles/913730/

    #dart #компиляторы #корутины #открытый_код #состояние #языки_программирования #мотивация #качество_кода #асинхронное_программирование #многопоточность

  16. О времени, сложности и мотивации: история поражения и победы

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

    habr.com/ru/articles/913728/

    #dart #компиляторы #корутины #открытый_код #состояние #языки_программирования #мотивация #качество_кода #асинхронное_программирование #многопоточность

  17. О времени, сложности и мотивации: знакомство

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

    habr.com/ru/articles/913726/

    #dart #компиляторы #корутины #открытый_код #состояние #языки_программирования #мотивация #качество_кода #асинхронное_программирование #многопоточность

  18. Корутины в C++20: архитектура и практическое применение

    Корутины в C++20 открывают новые возможности для асинхронного программирования, но они также могут привести к ошибкам, связанным с управлением памятью и синхронизацией. Здесь о том, какие проблемы могут возникнуть и чего ожидать от будущих обновлений корутин в C++.

    habr.com/ru/articles/908386/

    #p2300 #корутины #coroutines #c++ #асинхронность #сопрограммы #stackless #promise_type #co_await

  19. Корутины Kotlin: быстрый старт

    Мы привыкли учиться от простого к сложному, от аксиом к теоремам, от базовых понятий — к сложным концепциям, от «Hello, world!» — к многомодульным приложениям. Но библиотеке Kotlin Coroutines в этом смысле не повезло. И документация, и немногочисленные (особенно на русском языке) учебные материалы с первых страниц оглушают читателя потоком понятий, которые объясняются друг через друга. Приблизительно так: Job — это часть контекста, а контекст — это контейнер, содержащий Job . Раскрутить этот клубок бывает непросто. Поэтому я пытаюсь рассказать о корутинах по традиционным схемам обучения, начиная от самых простых понятий и постепенно усложняя рассказ. Мне кажется, что все понятия нужно объяснять на примерах — так теория лучше укладывается в голове.

    habr.com/ru/articles/894892/

    #Kotlin #корутины

  20. Расследуем дело асинхронного программирования с Леонидом Каневским

    История развития асинхронного программирования в языке Swift. Можно относиться к этому как к расследованию нераскрытого дела. Начать расследование

    habr.com/ru/companies/cleverte

    #корутины #ios_developer #swift__разработка #асинхронноепрограммирование #асинхронное_программирование

  21. Синтаксис, синглтон и смертельный ромб в С++: взгляд опытного разработчика на C

    Давайте знакомиться: меня зовут Анатолий Семятнёв, я и моя команда разрабатываем ПО для опорных сетей 5G в YADRO. В IT-сфере работаю давно, и мой опыт в основном связан с языком С: занимался Board Support Package (BSP) и драйверами, много работал с операционной системой QNX. До того, как начал полноценно работать на С++, сталкивался с языком в нулевые, писал на С++98. Тем не менее все это время я краем глаза поглядывал, что происходит в С++, и хотел вернуться к программированию на этом языке. Читал книги, делал пет-проекты, смотрел записи конференций и митапов по С++. А когда пришел в YADRO, стал писать на С++. Мне с ходу дали большую фичу для имплементации, я писал много кода, и получал комментарии от коллег. В этом материале собрал все, что изучил или вспомнил по итогам код-ревью. Что рассмотрим в статье: • Ключевые концепции — explicit, final, default, string — и как их использовать. • Инициализацию мемберов с помощью пустого брейс-листа. • Синглтон Майерса в корутинах. • «Смертельный ромб» и все, что связано с виртуальным наследованием.

    habr.com/ru/companies/yadro/ar

    #с++_программирование #с++ #синглтон #корутины #синтаксис #explicit #final #default #string #виртуальное_наследование

  22. Гайд по реализации паттерна Composite в Kotlin с sealed-классами и корутинами

    Привет, Хабр! Сегодня рассмотрим, как реализовать паттерн Composite в Kotlin с помощью sealed-классов и корутин . Если у вас есть сложная система с кучей объектов — простых и составных — и вы хотите управлять ими, не теряя асинхронности, то этот гайд для вас.

    habr.com/ru/companies/otus/art

    #kotlin #паттерн #composite #корутины

  23. Корутины: stackful vs stackless

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

    habr.com/ru/articles/850970/

    #корутины #stackles #stackfull #fibres #green_thread #зеленые_треды #многопоточность #async/await #горутины #go

  24. Kotlin Coroutines. От А до Я

    Полный разбор корутинного мира с нуля, который может послужить отличной шпаргалкой на собеседовании ! Разберем разницу между многопоточностью и асинхронностью ; раскроем все основные понятия корутин, параллельно ссылаясь на исходники kotlinx.coroutines; посмотрим их применение на практике и в конце напишем свой собственный CoroutineScope. Let's go

    habr.com/ru/articles/838974/

    #Kotlin #coroutine #coroutines #корутины #асинхронность #асинхронное_программирование #dispatcher #launch #async #deffered

  25. Как мы написали конкурентные структуры данных на C++ и научились их верифицировать

    Привет! В команде ВКонтакте мы переписываем рантайм движков баз данных — они становятся быстрее, надёжнее, а ещё с новым рантаймом проще писать код. Однако есть нюанс: в новом рантайме много конкурентных структур данных, в том числе нужных для работы с корутинами из С++20. Появляется интересная задача — проверять корректность этих конкурентных структур данных до выхода кода в продакшен. Для решения этой задачи команда ВКонтакте вместе со студентами из университетов ИТМО и СПбГУ работала над научно-исследовательским проектом — верификацией конкурентных структур данных на языке C++. В этой статье подробно расскажем, как мы в рамках проекта проверяли корректность наших конкурентных структур данных и заодно исправили найденную в нашем новом рантайме ошибку.

    habr.com/ru/companies/vk/artic

    #concurrency #корутины #каналы #верификация #c++ #многопоточность #параллельное_программирование #tla+

  26. Разбираемся с coroutine в Kotlin — 3

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

    habr.com/ru/articles/818847/

    #kotlin #coroutines #coroutine #корутины #сравнение

  27. Разбираемся с coroutine в Kotlin — 2

    Первое упоминание корутин дано в статье 1963 года (1) и о ней первая часть . После прочтения статьи, сказать честно, я не очень понял идею корутин и искал дополнительную информацию. Понадобилось четыре статьи: статья Конвея, глава из книги Дональда Кнута (2) и две статьи Саймона Тэтхема (3, 4) и некоторое время, чтобы глубже понять идею. После прочтения статьи Конвея и до прочтения Кнута казалось, что разница между вариантом программа-подпрограмма и две корутины почти косметическая. Казалось, что программы отличаются реализацией. Однако разница более существенная, нужно отказаться от идеи писать программы, в которых есть подпрограммы, а представлять программу как набор независимых модулей, которые могут обмениваться данными. Назад в прошлое

    habr.com/ru/articles/817047/

    #корутины #история_it #конвей #тэтхем #реализация #си #coroutines

  28. Суслик и пингвин: кодим на Go под Linux

    Язык ядра Linux, его модулей и утилит написаны на языке C. Хоть он и является старым языком и прародителем многих других, но его до сих пор используют. В экосистему линукса постепенно проникают и более молодые языки — например, Rust. Но сегодня мы поговорим об детище Google — GoLang. Я много пишу про этот замечательный язык и в этой статье предлагаю изучить основы системного программирования на Go, мы изучим как работать с ядром, юзерспейсом линукса. Расскажу об стандарте POSIX, а также узнаем, как сочетать C и Go-код.

    habr.com/ru/articles/811587/

    #асинхронность #корутины #горутины #сопрограммы #open_source #linux #go #golang #низкоуровневое_программирование #мультипоточность #параллельность #C #C++

  29. Жизнь без линтеров и расчет цены абстракции: материалы для разработчиков на С++

    В марте мы собирались на митапе по С++ в Санкт-Петербурге. Для всех, кто не смог присоединиться к встрече, подготовили записи докладов и дискуссии с экспертами из YADRO, VK и Kaspersky, а также создателем Sprinx Андреем Аксёновым. Почему стоит сохранить подборку в закладки: • Руководитель отдела компиляторов научит рассчитывать цену абстракции для функций и других сущностей с учетом ваших ресурсов и возможностей компилятора. • Эксперт из PVS-Studio покажет, почему линтеры не всегда подходят для поиска ошибок и какое решение использовать вместо них, чтобы не навредить безопасности сервиса. • Инженеры с многолетним опытом работы на С++ поделятся опытом проведения код-ревью — возможно, вы найдете в их практиках что-то полезное или просто посмеетесь вместе с участниками дискуссии.

    habr.com/ru/companies/yadro/ar

    #абстракции #функции #c++ #корутины #линтеры #кодревью #дискуссия #ошибки_в_коде #митап

  30. Митап по С++ в Питере и онлайн: цена абстракции, статистический анализ и дискуссия о код-ревью

    20 марта собираемся на бесплатном митапе в Санкт-Петербурге и онлайн. Константин Владимиров расскажет о цене абстракции, а разработчик из команды телекома YADRO Владимир Леонтьев на примере инструмента генерации RPC-серверов покажет, как написать кодогенератор. В конце встречи создатель Sprinx Андрей Аксенов, разработчик VK AdTech Станислав Юрченко, техлид Kaspersky Александр Еналдиев и разработчик YADRO Илья Казаков вместе с гостями и зрителями митапа обсудят тонкости код-ревью. В этом материале делимся программой митапа. Регистрация уже открыта —

    habr.com/ru/companies/yadro/ar

    #линтеры #абстракции #дискуссия #кодревью #аналитика #корутины #ranges