Await своими руками в C#

Привет, Хабр! Многим кажется, что await работает только с Task и ValueTask , но на самом деле язык позволяет сделать любой объект ожидаемым — нужно лишь реализовать определённый паттерн. Итак, зачем нужен свой await? Бывают случаи, когда вам хочется написать асинхронный метод, но результат приходит не из готового Task или таймера. Например, ждёте какое-то событие, изменение файла, считывание из сокета, или просто хотите встроить задержку без запуска Task . Когда вы пишете await expr , компилятор в глубине понимает так: берётся результат expr.GetAwaiter() , затем вызывается awaiter.IsCompleted . Если false , он подписывается на awaiter.OnCompleted , когда завершится, и потом берёт awaiter.GetResult() .

https://habr.com/ru/companies/otus/articles/977074/

#C# #Асинхронное_программирование #await

Await своими руками в C#

Привет, Хабр! Многим кажется, что await работает только с Task и ValueTask , но на самом деле язык позволяет сделать любой объект ожидаемым — нужно лишь реализовать определённый паттерн. Итак, зачем...

Хабр

SwooleApp: Легковесный фреймворк для Swoole — разбираем пример приложения

Недавнооткрыл миру SwooleApp — минималистичного фреймворка для PHP, построенного на базе Swoole . Если вы уже работали с Swoole напрямую, то знаете, что это мощный инструмент для создания высокопроизводительных приложений, но иногда хочется иметь чуть больше структуры и удобства, чем предлагает чистый Swoole. Именно эту нишу и занимает SwooleApp. В этой статье я кратко расскажу, что это за проект, как его использовать, и поделюсь ссылкой на рабочий пример приложения, который можно запустить в Docker за несколько минут.

https://habr.com/ru/articles/975080/

#Swoole #PHP #асинхронное_программирование #Task_Workers #микросервисы #пул_соединений #Middleware #вебсервер #REST_API #многозадачность

SwooleApp: Легковесный фреймворк для Swoole — разбираем пример приложения

Недавнооткрыл миру SwooleApp  — минималистичного фреймворка для PHP, построенного на базе  Swoole . Если вы уже работали с Swoole напрямую, то знаете, что это мощный инструмент для создания...

Хабр

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

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

https://habr.com/ru/articles/970236/

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

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

Поколение большого пальца – вот как нас называли. Какие глубокомысленные переписки мы ухитрялись вести на кнопочных телефонах, набирая текст SMS большим пальцем асинхронно с конспектированием лекций…...

Хабр

ActiveMQ Artemis vs Apache Kafka

Добрый день. Сегодня мы поговорим о двух мощных технологиях для асинхронного обмена данными — ActiveMQ Artemis и Apache Kafka. Мы разберемся, что они из себя представляют, как устроены под капотом, и главное — в каких ситуациях стоит выбрать одну, а в каких другую. Наш план на сегодня довольно насыщенный. Мы начнем с того, почему вообще все пришли к асинхронному общению сервисов. Затем подробно разберем ActiveMQ Artemis — что это и какие задачи решает. Заглянем в его техническую архитектуру, чтобы понять источник его производительности. После этого мы кратко вспомним основы Apache Kafka, чтобы затем перейти к самому интересному — детальному сравнению. Мы составим четкие рекомендации, поговорим о нагрузочных характеристиках и подведем итоги.

https://habr.com/ru/articles/959660/

#activemq_artemis #apache_kafka #брокер_сообщений #очереди_сообщений #асинхронное_программирование #messaging #jms #eventdriven_architecture #pubsub

ActiveMQ Artemis vs Apache Kafka

Добрый день. Сегодня мы поговорим о двух мощных технологиях для асинхронного обмена данными — ActiveMQ Artemis и Apache Kafka. Мы разберемся, что они из себя представляют, как устроены под капотом, и...

Хабр

Кейс из production: Deadlock в асинхронном коде на Java

Недавно наткнулся на коварную проблему, которая отлично демонстрирует важность правильной конфигурации пула потоков при работе с асинхронным программированием. Эта ситуация может возникнуть в любом проекте, где используются вложенные асинхронные операции, и её последствия могут быть катастрофическими для production-системы.

https://habr.com/ru/articles/958166/

#java #jvm #асинхронное_программирование #многопоточность #spring_framework

Кейс из production: Deadlock в асинхронном коде на Java

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

Хабр

Python в enterprise-разработке: почему популярность ЯП распространилась и на корпоративный сектор. Часть 2

Всем привет! Это Леша Жиряков. На прошлой неделе мы начали разбирать , почему Python стал настолько востребован для создания корпоративных программных решений. Сегодня продолжим тему — поговорим об управлении зависимостями, асинхронном программировании в корпоративной среде, тестировании, корпоративной безопасности и других ключевых моментах. Заодно обсудим перспективы Python в enterprise-разработке. Приступим!

https://habr.com/ru/companies/ru_mts/articles/927802/

#python #программирование #исследования_в_ит #enterprise_architect #асинхронное_программирование #корпоративная_безопасность

Python в enterprise-разработке: почему популярность ЯП распространилась и на корпоративный сектор. Часть 2

Всем привет! Это Леша Жиряков. На прошлой неделе мы начали разбирать , почему Python стал настолько востребован для создания корпоративных программных решений. Сегодня продолжим тему — поговорим об...

Хабр

Реактивные системы: возможно ли отслеживать зависимости в асинхронном коде?

В реактивных системах существуют специальные функции, такие как watchEffect во Vue или autorun в MobX, которые умеют автоматически отслеживать зависимости и перезапускать «эффект» при их изменении. Принцип их работы следующий:

https://habr.com/ru/articles/925304/

#реактивность #реактивное_программирование #асинхронный_код #асинхронное_программирование

Реактивные системы: возможно ли отслеживать зависимости в асинхронном коде?

В реактивных системах существуют специальные функции, такие как watchEffect во Vue или autorun в MobX, которые умеют автоматически отслеживать зависимости и перезапускать «эффект» при их изменении....

Хабр

Оптимизация асинхронного сервиса на Python

Всем привет! Сегодня хочу поделиться с вами нашим опытом ускорения асинхронного микросервиса на Python примерно на 25%. Я расскажу, какие действия мы предпринимали с командой, что помогло, а что оказалось не особенно полезно с точки зрения ускорения сервиса. Небольшое предисловие: мы в Иви постоянно работаем над тем, чтобы наши сервисы отвечали быстро и их максимальная предельная нагрузка повышалась. В процессе очередного анализа сервисов, мы выяснили, что один из них, о котором пойдет речь в статье, отвечает довольно медленно, учитывая его особенности. И мы решили его ускорять.

https://habr.com/ru/companies/ivi/articles/920850/

#python #asyncio #aiohttp #асинхронное_программирование #телеметрия #оптимизация #время_ответа #профилирование #orjson

Оптимизация асинхронного сервиса на Python

Всем привет! Сегодня хочу поделиться с вами нашим опытом ускорения асинхронного микросервиса на Python примерно на 25%. Я расскажу, какие действия мы предпринимали с командой, что помогло, а что...

Хабр

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

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

https://habr.com/ru/articles/913730/

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

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

Приветствую вас, читатели. Для начала я рекомендую вам ознакомиться с первой частью моего цикла статей. В этом цикле я пишу о балансе, состояниях разработчика, корутинах и Dart. Все части: Часть 1: О...

Хабр

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

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

https://habr.com/ru/articles/913728/

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

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

Приветствую вас, читатели. Для начала я рекомендую вам ознакомиться с первой частью моего цикла статей. В этом цикле я пишу о балансе, состояниях разработчика, корутинах и Dart. Все части: Часть 1: О...

Хабр