C#: Разговоры о многопоточности без воды
О чём курс
О чём курс
Сергей Камянецкий разбирает многопоточность и параллельное программирование в C#/.NET на примерах кода и практических задачах. Вы начнёте с создания потоков через Thread и защиты общих ресурсов, затем перейдёте к Task, async/await, параллельным вычислениям и потокобезопасным коллекциям. Автор показывает типичные ошибки и способы их устранения.
Кому подойдёт
Материал рассчитан на C#-разработчиков уровня junior и middle, которые готовятся к техническим собеседованиям на позиции middle или senior. Для работы потребуется уверенное знание C#. Среди вопросов, которые разбирает автор, — гонки данных, взаимные блокировки, примитивы синхронизации и PLINQ.
Что вы разберёте
Вы будете управлять потоками и их жизненным циклом, применять lock, Monitor и CancellationToken, обрабатывать исключения в параллельном коде. Практические задачи включают сложение матриц, систему бронирования с конкурентным доступом и обработку данных по схеме Producer–Consumer. Отдельно рассматриваются диагностика Race Conditions и Deadlock, корректное завершение работы потоков и сочетание синхронного с асинхронным кодом.
В части о коллекциях автор сравнивает обычные структуры с ConcurrentDictionary, ConcurrentQueue, ConcurrentStack и ConcurrentBag, а также разбирает BlockingCollection. Вы познакомитесь с Parallel LINQ и применением параллельных операций, включая обработку ошибок. Автор связывает выбор инструментов с компромиссом между скоростью и безопасностью доступа к данным.
Формат и автор
Курс содержит 86 небольших видеоуроков с текстовыми пояснениями, примерами кода и пошаговым разбором. После тем предусмотрены тесты и задания, в которых вы пишете код. Сергей Камянецкий — backend-разработчик, наставник и автор курсов по C# и микросервисной архитектуре.
Программа обучения
- Начало: Добро пожаловать на курс! Давайте знакомиться!
- Основы многопоточности: Пример с выводом информации о главном и вторичном потоках. Пример параллельного запуска рабочих потоков. Создание потоков с разными приоритетами, фоновым флагом и именам. Замер производительности способов подсчёта суммы массива. Самостоятельная работа: сложение матриц. Самостоятельная работа: веб-сервис.
- Синхронизация потоков: Введение в гонку потоков и критическая секция. Самостоятельная работа: система брони билетов. Введение в Monitor. Самостоятельная работа: билеты на мониторе. Проблемы межпроцессного взаимодействия и Mutex. ReaderWriterLockSlim.
- Продвинутая синхронизация: Проблема ресурсов: Semaphore и SemaphoreSlim. Сигнальные объекты. Состояние потоков и взаимная блокировка.
- Управление жизненным циклом потоков: Возврат результата из вторичного потока. Остановка вторичного потока. Пул потоков. Самостоятельная работа: обновление сервера. ThreadPool.RegisterWaitForSingleObject. Обработка ошибок в многопоточном приложении.
- Task и асинхронное программирование: Асинхронность и Task: первые шаги. Самостоятельная работа: переезд на Task. Продолжение выполнения с ContinueWith. Самостоятельная работа: ContinueWith. Unwrap. Обработка исключений в Task. Самостоятельная работа: переезд Thread → Task. Отмена Task через CancellationTokenSource.
- Async/Await паттерн: Волшебные async/await. Синтаксис async/await и контекст потока. Ошибки await Task.WhenAll.
- Параллельное программирование: Упоминание о Parallel. Parallel LINQ. Потокобезопасные коллекции. Техническое задание: потокобезопасная очередь. BlockingCollection. Техническое задание: использование BlockingCollection.
- Окончание
Теги курса
Другие материалы автора 7
СК Сергей Камянецкий Все материалыОтзывов пока нет. Будьте первым!
Этот курс сейчас в процессе организации складчины. Нажмите кнопку «Записаться» и ожидайте старта — вам придёт уведомление. Когда складчина стартует, в карточке курса будет указан актуальный взнос. Текущая цена пока в процессе формирования и может отличаться от финальной.
Да, мы стремимся, чтобы финальный взнос был не больше ≈10% от оригинальной цены курса. Чем больше участников записывается в складчину, тем ниже выходит взнос для каждого.
Нажмите кнопку «Записаться» и авторизуйтесь на сайте через email (через ту же почту, которую будете использовать для входа). В личном кабинете вас будут ждать инструкции, как пригласить других участников — чем больше людей записалось, тем быстрее стартует складчина и тем ниже взнос. Как только складчина готова к приобретению, вам придёт уведомление.