Статьи по асинхронности

Я рад сообщить, что в октябре вышел специальный выпуск журнала MSDN Magazine, посвященный возможностям языков C# и Visual Basic для асинхронной работы: «async-await». Если вас интересует эта тема, то обратите внимание на мою вводную статью для новичков, статью Мэдса Торгерсена, посвященную тому, что происходит за сценой, а также статью Стивена Тауба для экспертов, о производительности…

1

Обновление Async CTP

Доброе утро всем! Я рад сообщить вам, что команды C# и VB «обновили» async CTP (Community Technology Preview) на конференции MIX11, которая проходит сегодня, и что оно теперь доступно на сайте Async CTP. Помните, что CTP – это наш ранний взгляд на предложенную возможность языка под названием async, которая позволит получить нам вашу обратную связь….

0

Асинхронность в C#. Часть 8: опять исключения

(В этом сообщении я буду говорить о внутренних, неприятных, дурных и критических исключениях. Для разъяснения этих терминов, загляните сюда.) Если в вашем процессе происходит необработанное исключение, то явно произошло что-то плохое и непредвиденное. Если это критическое исключение, то шансов спасти процесс у вас уже нет – с ним уже все кончено. Вы можете так и…

0

Асинхронность в C# 5. Часть 7: исключения

Давайте продолжим с того места, где мы остановились (ха-ха-ха!) после небольшого отступления: обработка исключений в таких «возобновляемых» методах, подобных нашим асинхронным методам, кажется немного странной. Чтобы понять, насколько это странно, вам может понадобиться освежить в памяти мою последнюю серию статей о проектировании блоков итераторов, и в особенности сообщение о разнице между push и pull-моделями. В…

0

Асинхронность в C# 5. Часть 6: насколько асинхронно?

Уже несколько людей задали мне вопрос о том, чем руководствовались разработчики языка, требуя, чтобы в объявлении каждого метода, содержащего выражение “await”, присутствовало контекстное ключевое слово “async”. Как и в любом решении, здесь есть свои «за» и «против», которые должны приниматься во внимание в контексте множества противоречивых и несовместимых принципов. Здесь нет простого решения, которое бы…

0

Асинхронность в C# 5. Часть 5: слишком много задач

Предположим, в городе находится куча отделений банка, в каждом из которых есть куча служащих и один мальчик на побегушках. В городе есть множество клиентов, каждый из которых хочет снять кучу денег из банка в течение дня. Алгоритм следующий: Клиент находит ближайшее отделение и выстаивает в очереди. Если очередь тянется аж до двери, то он идет…

0

Асинхронность в C# 5. Часть 4: это не магия

Сегодня я хочу поговорить об асинхронности, которая никак не связана с многопоточностью. Люди продолжают меня спрашивать: «Ну как возможна асинхронность без многопоточности?» Странный вопрос, поскольку вы наверняка и сами знаете на него ответ. Давайте я задам вопрос по-другому: как возможна многозадачность на одном процессоре? Вы ведь не можете выполнять две вещи «одновременно», если задачу может…

0

Асинхронность в C# 5. Часть 3: Композиция

Как то в 6:45 утра я шел на остановку к своему автобусу. Прямо на углу 45-й улицы, молодой парень, без футболки, весь в крови промчался мимо меня. За ним гнался другой парень, размахивая бейсбольной битой. Я сразу же подумал: «Боже мой! Нужно немедленно вызвать полицию!» Затем я увидел, что за парнем с битой гнался Граф…

0

Асинхронность в C# 5. Часть 2: Откуда await?

Сперва я хочу прояснить два момента, поскольку наше исследование простоты использования показало, что это может быть непонятным. Помните код, который я показывал вам в прошлый раз? async void ArchiveDocuments(List<Url> urls) { Task archive = null; for(int i = 0; i < urls.Count; ++i) { var document = await FetchAsync(urls[i]); if (archive != null) await archive;…

0

Асинхронность в C# 5. Часть 1

Асинхронность в C# 5. Часть 1 Разработчики C# 2.0 поняли, что реализация логики итераторов слишком сложная. Поэтому они добавили блоки итераторов (iterator blocks). Добавили так, чтобы компилятор знал, как создать конечный автомат для хранения продолжения – «что выполнить затем» – где-то в состоянии, скрытом от пользователя, чтобы не пришлось этот код писать руками. Они также…

0