Чему вы научитесь
- Разберетесь с основными понятиями тематики курса: многопоточностью, конкурентностью, асинхронностью и параллелизмом
- Изучите устройство и особенности работы с потоками исполнения (Thread) и пулом потоков (ThreadPool) в C#
- Научитесь использовать конструкции синхронизации пользовательского режима (Interlocked, SpinLock, SpinWait), режима ядра (Mutex, Semaphore, AutoResetEvent, ManualResetEvent) и гибридные конструкции (Monitor / lock, SemaphoreSlim и др.)
- Освоите современный подход к асинхронной разработке на C#, познакомитесь с классом Task, узнаете как запускать асинхронные задачи
- Глубоко изучите паттерн TAP (Task-based asynchronous pattern): работу с исключениями в задачах, жизненный цикл задачи, требования к методам, реализующим асинхронные операции
- Детально изучите работу с async/await, в том числе то, как на уровне компилятора осуществляется подготовка кода для реализации асинхронного режима работы
- Разберетесь с темой параллелизма в C#: работа с Task Parallel Library (TPL) и PLINQ
- Узнаете как создавать асинхронные потоки (IAsyncEnumerable<T>), работать с неизменяемыми и конкурентными коллекциями
О курсе
На сегодняшний день асинхронность и параллелизм - это одни из самых сложных тем для освоения в рамках разработки программного обеспечения. Вместе с тем, это и наиболее значимые области, в которых должен разбираться современный backend-разработчик на C#. Редко какое собеседование проходит без общения на эту тему. Мы постарались всесторонне охватить (насколько это для нас показалось возможным и необходимым) темы многопоточности, асинхронности, конкурентности и параллелизма на C#.
В рамках курса мы последовательно раскрываем темы, связанные с этими направлениями так, чтобы у учащихся сформировалось наиболее полное понимание материалов курса, причин почему возникли те или иные технологии, а также понимание того, как с ними работать. Фокус курса именно на глубоком понимании сути: мы разбираем не только "как использовать", но и "как это работает".
В курсе последовательно даны разделы с теорией, за которыми следуют практические блоки, в которых показаны примеры применения полученных ранее знаний. В уроках вам будут встречаться задания на закрепление пройденного материала, а в конце каждого модуля - большой урок с задачами.
Для кого этот курс
Начальные требования
Для успешного освоения материала требуется: уверенное знание языка C# и понимание базовых принципов объектно-ориентированного программирования (ООП). Хорошо, если у вас есть опыт работы с задачами (Task), и вы знакомы с асинхронным программированием на базовом уровне (например, вы уже использовали async/await в реальных задачах).
Наши преподаватели
Как проходит обучение
Курс состоит из семи модулей, охватывающих ключевые темы многопоточности, асинхронности и параллелизма в C# и .NET. Каждый модуль построен вокруг конкретной практической темы. В модуле от пяти до семи уроков, каждый из которых включает структурированный теоретический материал с объяснением концепций, примерами кода и демонстрацией практических кейсов.
В конце каждого модуля вас ждет урок "Решение задач". Он содержит задачи на программирование разного уровня сложности, которые помогут закрепить знания и научиться применять изученные технологии на практике.
Программа курса
Сертификат
Что вы получаете
- Глубокое понимание темы конкурентности в C#: разберётесь с async/await, Task Parallel Library (TPL), PLINQ, паттерном TAP (Task-based asynchronous pattern), конструкциями синхронизации и многим другим
- Практические навыки: научитесь применять знания в различных сценариях
- Доступ к сообществу и поддержке: сможете задать вопросы в комментариях и получить помощь от команды Devpractice и других студентов
- Базу для роста и экспертности: курс даст не просто знания, а понимание «как это работает», необходимое для построения высоконагруженных, надёжных и масштабируемых систем в экосистеме .NET
- Портфолио решений типовых задач: по мере прохождения курса вы соберете коллекцию реализованных паттернов и подходов, которые можно использовать в реальных проектах
- Возможный карьерный рост: знания об асинхронности и параллелизме являются обязательными для уровня middle/middle+/senior разработчика