Pull to refresh
  • by relevance
  • by date
  • by rating

Async в C# и SynchronizationContext

.NET *
Продолжение: часть III.

Прошлая заметка о async (часть I) была введением. В этой я продолжу начатую тему: я расскажу о том, что async взаимодействует с SynchronizationContext, и как это влияет на разработку асинхронных графических приложений.

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

image
Читать дальше →
Total votes 58: ↑47 and ↓11 +36
Views 41K
Comments 3

C# 5 — об async/await с начала

Programming *.NET *C# *
Sandbox
В недавно вышедшей Visual Studio 11 Beta встроена новая и главная фишка будущего C# 5 — асинхронное программирование с помощью async/await. Про нее уже написано достаточно много статей в том, числе на хабре — например, эта серия статей. Однако, я для себя так и не понял в чем суть нового синтаксиса, пока сам не попробовал его в деле. Данная статья — попытка самому структурировать и до конца разобраться с этим достаточно интересным инструментом и поделиться результатами с сообществом, рассказав про него немного иначе. Итак, поехали…
Читать дальше →
Total votes 73: ↑70 and ↓3 +67
Views 254K
Comments 62

Они смеются над твоими колбеками или async/await «для бедных»

.NET *
У вас проект на .NET 4.0 и вам надоела «лапша» из колбеков? Вы бы хотели использовать async/await в своем проекте, но тимлид грозит небесной карой за смену платформы? Если установка патча на фреймворк и студию для вас являются допустимым решением, то вам сюда. Если нет, то существует другое решение.


(для гуру: внутри корутины на yield'ах)
Читать дальше →
Total votes 34: ↑23 and ↓11 +12
Views 39K
Comments 17

C# async для iOS и Android

Touch Instinct corporate blog Development for iOS *Development for Android *
Translation
Xamarin добавил поддержку C# 5 Async/await на iOS и Android. Кроме базовых классов .NET Async, появились 174 асинхронных метода в Xamarin.iOS и 337 в Xamarin.Android. Асинхронным так же стал Xamarin Mobile, который предоставляет кроссплатформенный доступ к адресной книге, камере и геолокации. Компоненты вовсю добавляют поддержку async, например, облачный backend Parse.

Под катом расшифровка и перевод вебинара об этом значимом событии.


Читать дальше →
Total votes 35: ↑32 and ↓3 +29
Views 15K
Comments 4

AsyncCollections: история одного велосипеда

.NET *C# *Concurrent computing *
Sandbox
С давних времён я был большим поклонником System.Collections.Concurrent и BlockingCollection в особенности. Сколько раз это чудо инженерной мысли выручало в самых разнообразнейших ситуациях — не счесть.

С чуть менее давних времён в обиход прочно вошли async/await. Казалось бы, жизнь прекрасна, но есть одно «но»: асинхронный код миксовать с блокирующим кодом как-то не очень-то хочется. А BlockingCollection, как несложно догадаться (хотя бы из названия), в ряде случаев поток блокирует.
Что же делать?
Total votes 27: ↑26 and ↓1 +25
Views 16K
Comments 18

Параллельная загрузка данных с временными ограничениями

Programming *.NET *Algorithms *C# *
Tutorial
Бывают ситуации, когда необходимо получить данные из нескольких удалённых источников, но так, чтобы время ожидание было не слишком большим. Например, при загрузке данных о погоде или курсе валюты, мы можем опросить несколько сервисов и отобразить результаты всех ответивших за заданный промежуток времени.



Если за этот промежуток времени ответило недостаточное количество сервисов, мы можем дать дополнительное время, чтобы дождаться загрузки.

Итого, мы оперируем тремя базовыми параметрами:
  • Приемлемым временем ожидания
  • Минимально необходимым количеством источников
  • Дополнительным временем ожидания

Читать дальше →
Total votes 15: ↑7 and ↓8 -1
Views 4K
Comments 0

Недопонимание про async/await и многопоточность в C#

.NET *C# *
Sandbox
Привет, Хабр! Тема async/await в .NET Framework и C# 5.0 не нова и объезженна: все давно знают, что это, как оно работает, все знакомы с тем скромным фактом, что это очень текучая абстракция и поведение зависит от SynchronizationContext. Об этом очень много писали на хабре, ещё чаще этот вопрос размусоливался в блогах различных респектабельных персон .NET-сообщества.

Тем не менее, мне очень часто приходится сталкиваться с тем, что не только новички, но и матёрые тимлиды не совсем понимают, как правильно пользоваться этим инструментом в разработке.
Читать дальше →
Total votes 27: ↑24 and ↓3 +21
Views 75K
Comments 16

Python 3.5; async/await

Python *Programming *Designing and refactoring *Algorithms *Concurrent computing *
Тихо и незаметно (с), вышел Python версии 3.5! И, безусловно, одно из самых интересных нововведений релиза является новый синтаксис определения сопрограмм с помощью ключевых слов async/await, далее в статье об этом.

Поверхностный просмотр «PEP 0492 — Coroutines with async and await syntax» по началу оставил у меня вопрос «Зачем это надо». Сопрограммы удовлетворительно реализуются на расширенных генераторах и на первый взгляд может показаться, что все свелось к замене yield from на await, а декоратора, создающего сопрограмму на async. Сюда можно добавить и возникающее ощущение, что все это сделано исключительно для использования с модулем asyncio.

Но это, конечно же, не так, тема глубже и интереснее.
Читать дальше →
Total votes 29: ↑28 and ↓1 +27
Views 186K
Comments 26

Упрощение асинхронного кода на JavaScript с внедрением асинхронных функций из ES2016

Microsoft corporate blog JavaScript *Microsoft Edge
Translation
Хотя мы еще продолжаем работу над внедрением поддержки ES6/2015, команда Chackra также смотрит за пределы ES2016 и, в частности, на асинхронные функции. Мы рады объявить об экспериментальной поддержке async-функций в Microsoft Edge, начиная со сборки Microsoft Edge (EdgeHTML 13.10547).


Читать дальше →
Total votes 26: ↑21 and ↓5 +16
Views 19K
Comments 18

Koajs 2.0: новое поколение фреймворка нового поколения

Website development *Node.JS *
KoaJS logo«Next generation web framework for node.js» — так написано в документации к версии 1.0. Звучит неплохо, я к этому добавлю что 2 года назад после внедрения koa на одном из проектов у наших программистов появился термин “псевдо-синхронный код” (Это когда код выглядит как синхронный но на самом деле исполняется асинхронно). Что за бред Как это работает я расскажу под катом.
Читать дальше →
Total votes 23: ↑16 and ↓7 +9
Views 48K
Comments 16

Беглый взгляд на Async-Await в Android

Development for Android *Kotlin *
Translation
От переводчика

Это мой первый перевод, поэтому прошу прощения за неточности. Если вы найдете ошибки в переводе, пожалуйста, сообщите об этом. Я не нашел лучшего перевода слова сoroutine, чем сопрограмма, поэтому решил использовать оригинал. Если у вас появятся идеи по этому поводу, буду рад узнать.


Kotlin версии 1.1 принесет в язык coroutin'ы, которые позволяют приостанавливать вычисления в какой-то точке, а затем продолжить их позднее. Очевидный пример этой возможности — async-await, который был добавлен в C# несколько лет назад.


Каждый android разработчик знает, что когда мы имеем дело с сетевыми запросами или другими I/O задачами, то нам необходимо удостовериться, что не происходит блокировка основного потока, а так же, что мы не трогаем UI из фонового потока. На протяжении многих лет приходят и уходят десятки приемов. В этой статье перечислены наиболее популярные, и показаны примеры удобства, которое несет с собой async-await.

Читать дальше →
Total votes 20: ↑18 and ↓2 +16
Views 11K
Comments 29

Погружение в Async-Await в Android

Development for Android *Kotlin *
Translation

В предыдущей статье я сделал беглый обзор async-await в Android. Теперь пришло время погрузиться немного глубже в грядущий функционал kotlin версии 1.1.


Для чего вообще async-await?


Когда мы сталкиваемся с длительными операциями, такими как сетевые запросы или транзакции в базу данных, то надо быть уверенным, что запуск происходит в фоновом потоке. Если же забыть об этом, то можно получить блокировку UI потока еще до того, как задача закончится. А во время блокировки UI пользователь не сможет взаимодействовать с приложением.

Читать дальше →
Total votes 19: ↑18 and ↓1 +17
Views 19K
Comments 11

Async/await это шаг назад для JavaScript'a?

JavaScript *Node.JS *
Translation


В конце 2015 года я услышал об этой паре ключевых слов, которые ворвались в мир JavaScript, чтобы спасти нас от promise chain hell, который, в свою очередь, должен был спасти нас от callback hell. Давайте посмотрим несколько примеров, чтобы понять, как мы дошли до async/await.
Читать дальше →
Total votes 70: ↑46 and ↓24 +22
Views 43K
Comments 115

Очередная node.js-библиотека…

Node.JS *
Sandbox

Думаю, мы можем опять обнулить счетчик времени появления очередной JS библиотеки.


Все началось примерно 6 лет назад, когда я познакомился с node.js. Около 3 лет назад я начал использовать node.js на проектах вместе с замечательной библиотекой express.js (на wiki она названа каркасом приложений, хотя некоторые могут называть express фреймворком или даже пакетом). Express сочетает в себе node.js http сервер и систему промежуточного ПО, созданную по образу каркаса Sinatra из Ruby.

Читать дальше →
Total votes 29: ↑22 and ↓7 +15
Views 15K
Comments 40

Как эффективнее читать данные с диска (при условии, что у вас .Net)

Технологический Центр Дойче Банка corporate blog IT systems testing *Programming *.NET *Development for Windows *


Привет, Хабр! Некоторое время назад меня заинтересовал вопрос: как эффективнее всего читать данные с диска (при условии, что у вас .Net)? Задача чтения кучи файлов встречается во множестве программ, которые при самом старте начинают вычитывать конфигурации, некоторые самостоятельно подгружают модули и т.д.

В интернете я не нашел подобных сравнений (если не считать тюнинга под определенные конфигурации).
Читать дальше →
Total votes 21: ↑19 and ↓2 +17
Views 11K
Comments 18

JavaScript: методы асинхронного программирования

RUVDS.com corporate blog Website development *JavaScript *
Translation
Синхронный код на JavaScript, автор которого не стремился сбить с толку тех, кто этот код будет читать, обычно выглядит просто и понятно. Команды, из которых он состоит, выполняются в том порядке, в котором они следуют в тексте программы. Немного путаницы может внести поднятие объявлений переменных и функций, но чтобы превратить эту особенность JS в проблему, надо очень постараться. У синхронного кода на JavaScript есть лишь один серьёзный недостаток: на нём одном далеко не уехать.



Практически каждая полезная JS-программа написана с привлечением асинхронных методов разработки. Здесь в дело вступают функции обратного вызова, в просторечии — «коллбэки». Здесь в ходу «обещания», или Promise-объекты, называемые обычно промисами. Тут можно столкнуться с генераторами и с конструкциями async/await. Асинхронный код, в сравнении с синхронным, обычно сложнее писать, читать и поддерживать. Иногда он превращается в совершенно жуткие структуры вроде ада коллбэков. Однако, без него не обойтись.

Сегодня предлагаем поговорить об особенностях коллбэков, промисов, генераторов и конструкций async/await, и подумать о том, как писать простой, понятный и эффективный асинхронный код.
Читать дальше →
Total votes 27: ↑22 and ↓5 +17
Views 68K
Comments 17

JavaScript ES8 и переход на async / await

RUVDS.com corporate blog Website development *JavaScript *Node.JS *
Translation
Недавно мы опубликовали материал «Промисы в ES6: паттерны и анти-паттерны». Он вызвал серьёзный интерес аудитории, в комментариях к нему наши читатели рассуждали об особенностях написания асинхронного кода в современных JS-проектах. Кстати, советуем почитать их комментарии — найдёте там много интересного.

image

По совету пользователя ilnuribat мы добавили к материалу опрос, целью которого было выяснить популярность промисов, коллбэков и конструкций async / await. По состоянию на 9-е сентября промисы и async / await получили примерно по 43% голосов, с небольшим перевесом async / await, коллбэкам досталось 14%. Главный вывод, который можно сделать, проанализировав результаты опроса и комментарии, заключается в том, что важны все имеющиеся технологии, однако, всё больше программистов тяготеют к async / await. Поэтому сегодня мы решили опубликовать перевод статьи про переход на async / await, которая является продолжением материала о промисах.
Читать дальше →
Total votes 41: ↑37 and ↓4 +33
Views 56K
Comments 107

Как работает JS: цикл событий, асинхронность и пять способов улучшения кода с помощью async / await

RUVDS.com corporate blog Website development *JavaScript *
Translation
[Советуем почитать] Другие 19 частей цикла
Часть 1: Обзор движка, механизмов времени выполнения, стека вызовов
Часть 2: О внутреннем устройстве V8 и оптимизации кода
Часть 3: Управление памятью, четыре вида утечек памяти и борьба с ними
Часть 4: Цикл событий, асинхронность и пять способов улучшения кода с помощью async / await
Часть 5: WebSocket и HTTP/2+SSE. Что выбрать?
Часть 6: Особенности и сфера применения WebAssembly
Часть 7: Веб-воркеры и пять сценариев их использования
Часть 8: Сервис-воркеры
Часть 9: Веб push-уведомления
Часть 10: Отслеживание изменений в DOM с помощью MutationObserver
Часть 11: Движки рендеринга веб-страниц и советы по оптимизации их производительности
Часть 12: Сетевая подсистема браузеров, оптимизация её производительности и безопасности
Часть 12: Сетевая подсистема браузеров, оптимизация её производительности и безопасности
Часть 13: Анимация средствами CSS и JavaScript
Часть 14: Как работает JS: абстрактные синтаксические деревья, парсинг и его оптимизация
Часть 15: Как работает JS: классы и наследование, транспиляция в Babel и TypeScript
Часть 16: Как работает JS: системы хранения данных
Часть 17: Как работает JS: технология Shadow DOM и веб-компоненты
Часть 18: Как работает JS: WebRTC и механизмы P2P-коммуникаций
Часть 19: Как работает JS: пользовательские элементы

Перед вами четвёртая часть серии материалов, посвящённых внутренним особенностям работы JavaScript. Эти материалы, с одной стороны, направлены на изучение базовых элементов языка и экосистемы JS, с другой, содержат рекомендации, основанные на практике разработки ПО в компании SessionStack. Конкурентоспособное JS-приложение должно быть быстрым и надёжным. Создание таких приложений — та цель, к которой, в конечном счёте, стремится любой, интересующийся механизмами JavaScript.

image
Читать дальше →
Total votes 32: ↑30 and ↓2 +28
Views 153K
Comments 28

Открытый вебинар C#: async и await

OTUS corporate blog Programming *C# *
Всем привет!

В четверг у нас стартует новый сишный курс — «Разработчик C#». Провели недавно открытый урок, дабы показать и формат лекций, и преподавателя. На вебинаре разбирались проблемы использования синхронной модели разработки ПО поиск путей решения данного подхода через использование асинхронной модели.


Как всегда ждём вопросы, комментарии, предложения.

Спасибо.
Total votes 19: ↑16 and ↓3 +13
Views 7.2K
Comments 2

JavaScript. Работаем с исключениями и данными в конструкциях async/await без блоков try-catch

Website development *JavaScript *Node.JS *
Translation
Появившиеся в JavaScript новые асинхроные конструкции async/await выглядят проще, чем Promise, и, конечно, значительно читабельнее, чем «callback-джунгли». Но одна вещь беспокоила меня — это использование try-catch. Сначала я подумал, что это не проблема, но, к несчастью, мне пришлось работать с цепочкой вызовов API, в которой каждый вызов API имел свое сообщение об ошибке, которое должно было прологировано. Вскоре я понял, что создаю «try/catch-джунгли», которые ничем не лучше «callback-джунглей».
Читать дальше →
Total votes 16: ↑10 and ↓6 +4
Views 9.6K
Comments 24
1