О курсе
Асинхронный подход к программированию позволяет создавать код, выполнение которого не будет блокировать выполнение другого кода. Благодаря такому подходу, например, одновременно может быть выполнено много разных задач или можно разделить выполнение одной большой громоздкой задачи на части, которые могут быть выполнены не последовательно, одна за другой, а одновременно.
Данный курс знакомит с подходами к асинхронному программированию в языке C#. Вы познакомитесь со средствами асинхронного и параллельного программирования, примерами применения этих подходов, сочетанием и отделением этих подходов к разработке. На курсе вы познакомитесь с шаблоном асинхронного программирования TAP (Task-based Asynchronous Pattern), сравните его с шаблонами APM и EAP. Также вы разберетесь в том, что такое ключевые слова async/await, рассмотрите их техническую реализацию, чтобы лучше понимать, как работает ваш асинхронный код. Далее вы рассмотрите, что такое Thread и ThreadPool и как они принимают участие в выполнении асинхронного кода, настройку продолжения задачи (TaskContinuation), планировщик задач (TaskScheduler) и контекст синхронизации, примеры работы с большим количеством задач, теорию блокировки и синхронизацию в многотекущей среде, а также реализацию этих средств в .NET (например, монитор, семафор, компьютер и другие).
Отдельно на курсе рассматриваются потокобезопасные коллекции, их назначение и строение, что такое распределенное программирование, виды многозадачности - выжимная и не выжимная. Вы познакомитесь с разными средствами класса Parallel и методами PLINQ, рассмотрите различные шаблоны параллельной и асинхронной обработки данных.
Этот курс подойдет как новичкам в программировании, так и опытным .NET разработчикам, желающим улучшить свои знания по асинхронному и параллельному программированию в C#. Для понимания рассмотренных в курсе тем потребуется знание языка C# на уровне C# Углубленный.
Этот курс входит в специальности:
Предварительные Требования
- C#
- LINQ
- VisualStudio
Вы научитесь
- Написать асинхронный код.
- Лучше понимать, как работают ключевые слова async/await.
- Разобраться, как оптимально создавать, стартовать и ожидать задачи.
- Выбрать наиболее подходящие средства синхронизации и блокировки ресурсов.
- Узнать, какие средства параллелизации существуют в C# и в каких случаях их лучше использовать.
- Лучше понимать, какие проблемы могут решить параллельное и асинхронное программирование.
- Научиться использовать шаблоны асинхронного и параллельного программирования.
- 5 ч 52 м
- 30.05.2024
- 8 из 8
- 05.06.2024
- украинский
Что входит в курс
×
Вы действительно хотите открыть доступ к тестированию по курсу C# Асинхронное программирование на 40 дней?
Это первый урок курса, целью которого является ознакомление с основной терминологией, сферами использования и средствами асинхронного программирования. Важной частью этого и последующих уроков являются практические примеры применения методов асинхронного программирования для решения различных задач, поэтому студенту желательно установить одну из IDE, поддерживающих синтаксис C#.
Цель урока – ознакомление с шаблоном асинхронного программирования TAP (Task-based Asynchronous Pattern), сравнение его с уже рассмотренными шаблонами APM и EAP.
Также во время занятия вы вспомните, чем параллелизм отличается от конкурентности и какие средства для них содержит TPL. Подробно рассмотрим классы Task/Task<TResult>, после чего повторим, чем reference-типы отличаются от value-типов и познакомимся с ValueTask/ValueTask<TResult>. Мы поговорим о шаблонах Абстрактная Фабрика и Фабричный метод, чтобы лучше понять, что такое TaskFactory/TaskFactory<TResult> и как им пользоваться. Закончив планирование задач, рассмотрим их отмену (Cancellation) и продолжение (TaskContinuation).
Цель урока - разобраться в том, что представляют собой ключевые слова async/await, рассмотреть их техническую реализацию, чтобы лучше понимать, как работает ваш асинхронный код. Освежим в памяти теоретические знания о законченном автомате (state machine) и рассмотрим пример, сгенерированный компилятором. Также мы познакомимся с типами, которые могут возвращать асинхронные методы и разберем на примерах, как и когда ими следует пользоваться. Познакомимся с контекстом выполнения и контекстом синхронизации, посмотрим, как они используются в асинхронном конечном автомате.
На этом уроке мы продолжим разбираться, как и благодаря чему работает уже рассмотренный нами асинхронный законченный автомат. Также мы упомянем, что такое Thread и ThreadPool и как они участвуют в выполнении асинхронного кода. Поговорим о настройке продолжения задачи (TaskContinuation), планировщике задач (TaskScheduler) и контексте синхронизации, рассмотрим примеры работы с большим количеством задач.
Цель этого занятия – понять, в каких случаях возникает deadlock и как его можно избежать. Также мы упомянем теорию блокировки и синхронизации в многопоточной среде, рассмотрим реализацию этих средств в .NET (например, монитор, семафор, мьютекс и другие). Также мы вспомним, какие ошибки мы видели, вызывая асинхронный код, и как такие ошибки можно обработать.
Цель этого урока – знакомство с потокобезопасными коллекциями, их назначением и строением.
В ходе урока мы повторим теорию о коллекциях, рассмотрим, как построены базовые коллекции, которая скрывается за ключевым словом foreach и зачем нам нужен итератор. Также мы познакомимся с потокобезопасными коллекциями из пространства имен System.Collections.Concurrent и разберемся, как они работают. Кроме того, рассмотрим тип Channel, который может использоваться в асинхронном коде без дополнительных средств синхронизации.
Целью этого урока является подведение всего, что мы знаем о создании и выполнении задач, а также более детальное ознакомление с планировщиком задач.
В ходе урока мы поговорим об основных методах и свойствах планировщиков задач, познакомимся с существующими реализациями и тем, как они планируют и выполняют работу. Разберемся, чем задачи верхнего уровня, дочерние и вложенные задачи. Вспомним, чем контекст синхронизации и как он может использоваться планировщиком задач. Также напишем собственный планировщик задач, чтобы на практике подытожить все полученные знания.
Целью этого урока является ознакомление с подходами к параллельным программированием, какие задачи можно решить с помощью этих подходов и где их использовать нецелесообразно.
В ходе урока мы вспомним, чем конкурентность отличается от параллелизма, узнаем, что такое распределенное программирование. Также поговорим о видах многозадачности – вытеснительной и не вытеснительной. Познакомимся с разными средствами класса Parallel и методами PLINQ. В конце урока рассмотрим различные шаблоны параллельной и асинхронной обработки данных и выполнения операций, которые можно использовать для решения задач.