Складчина: C#: Разговоры о многопоточности без воды [Stepik] [Сергей Камянецкий]
Практический курс по многопоточности и параллельному программированию в C#/.NET. От Thread и lock до PLINQ и потокобезопасных коллекций. Реальные примеры и паттерны для высокопроизводительных приложений.
Для кого этот курс:
- Курс предназначен для C# разработчиков уровня junior/middle, которые готовятся к техническим собеседованиям на позиции middle/senior developer и хотят уверенно отвечать на вопросы по многопоточности.
- Если вы когда-либо получали вопросы про Race Conditions, Deadlock'и, примитивы синхронизации или PLINQ на интервью и чувствовали себя неуверенно — этот курс для вас.
Начальные требования:
- Уверенное знание языка C#.
Чему вы научитесь:
- Создавать и управлять потоками с помощью Thread.
- Применять синхронизацию через lock и Monitor для защиты общих ресурсов.
- Использовать CancellationToken для корректной отмены долгих операций.
- Обрабатывать исключения в многопоточной среде.
- Различать назначение ConcurrentDictionary, ConcurrentQueue, ConcurrentStack, ConcurrentBag.
- Сравнивать производительность обычных и concurrent коллекций.
- Применять BlockingCollection для Producer-Consumer архитектур.
- Анализировать компромиссы между безопасностью и скоростью.
- Использовать Task и Task<T> для неблокирующих операций.
- Применять основы async/await для упрощения асинхронного кода.
- Комбинировать синхронный и асинхронный код.
- Разрабатывать системы бронирования с конкурентным доступом.
- Строить многопоточные математические вычисления (сложение матриц).
- Создавать Producer-Consumer системы для обработки данных.
- Диагностировать и устранять Race Conditions и Deadlock'и.
- Предотвращать гонки данных (Race Conditions).
- Правильно обрабатывать AggregateException в параллельном коде.
- Корректно завершать Producer-Consumer системы.
- Управлять жизненным циклом потоков и ресурсов.
Как проходит обучение:
- Курс состоит из небольших видеоуроков (всего их 86) с детальным текстовым сопровождением — каждая тема включает примеры кода и пошаговые объяснения принципов работы многопоточности. После изучения материала вы проходите тесты на понимание концепций и выполняете практические задания — пишете код.
Программа:
- Начало
- Основы многопоточности
- Синхронизация потоков
- Продвинутая синхронизация
- Управление жизненным циклом потоков
- Task и асинхронное программирование
- Async/Await паттерн
- Параллельное программирование
- Окончание
Спойлер: Подробно 1. Начало:
- Добро пожаловать на курс!
- Давайте знакомиться!
2. Основы многопоточности:
- Пример с выводом информации о главном и вторичном потоках.
- Пример параллельного запуска рабочих потоков.
- Создание потоков с разными приоритетами, фоновым флагом и именам.
- Замер производительности способов подсчёта суммы массива.
- Самостоятельная работа: сложение матриц.
- Самостоятельная работа: веб-сервис.
3. Синхронизация потоков:
- Введение в гонку потоков и критическая секция.
- Самостоятельная работа: система брони билетов.
- Введение в Monitor.
- Самостоятельная работа: билеты на мониторе.
- Проблемы межпроцессного взаимодействия и Mutex.
- ReaderWriterLockSlim.
4. Продвинутая синхронизация:
- Проблема ресурсов: Semaphore и SemaphoreSlim.
- Сигнальные объекты.
- Состояние потоков и взаимная блокировка.
5. Управление жизненным циклом потоков:
- Возврат результата из вторичного потока.
- Остановка вторичного потока.
- Пул потоков.
- Самостоятельная работа: обновление сервера.
- ThreadPool.RegisterWaitForSingleObject.
- Обработка ошибок в многопоточном приложении.
6. Task и асинхронное программирование:
- Асинхронность и Task: первые шаги.
- Самостоятельная работа: переезд на Task.
- Продолжение выполнения с ContinueWith.
- Самостоятельная работа: ContinueWith.
- Unwrap.
- Обработка исключений в Task.
- Самостоятельная работа: переезд Thread → Task.
- Отмена Task через CancellationTokenSource.
7. Async/Await паттерн:
- Волшебные async/await.
- Синтаксис async/await и контекст потока.
- Ошибки await Task.WhenAll.
8. Параллельное программирование:
- Упоминание о Parallel.
- Parallel LINQ.
- Потокобезопасные коллекции.
- Техническое задание: потокобезопасная очередь.
- BlockingCollection.
- Техническое задание: использование BlockingCollection.
9. Окончание
Автор Сергей Камянецкий
Создёт практические курсы по C# и микросервисной архитектуре. Помогет разработчикам переходить с junior на middle/senior уровень через реальные задачи и code review. Программист, наставник, популяризатор программирования.
Backend-разработчик и автор курсов по C# и микросервисной архитектуре. Помогаю junior и middle разработчикам переходить на новый уровень через практику и реальные проекты.
Цена 6500 руб.