×
Вы действительно хотите открыть доступ к тестированию по курсу C# Асинхронное программирование на 40 дней?
ВИДЕОУРОК №2. Task-based Asynchronous Pattern (TAP)
Это первый урок курса, целью которого является ознакомление с основной терминологией, сферами использования и средствами асинхронного программирования. Важной частью этого и последующих уроков являются практические примеры применения методов асинхронного программирования для решения различных задач, поэтому студенту желательно установить одну из 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. В конце урока рассмотрим различные шаблоны параллельной и асинхронной обработки данных и выполнения операций, которые можно использовать для решения задач.