C#: Разговоры о многопоточности без воды [Stepik] [Сергей Камянецкий]

Складчина: C#: Разговоры о многопоточности без воды [Stepik] [Сергей Камянецкий]

Снимок экрана 2026-04-12 в 00.45.png
Практический курс по многопоточности и параллельному программированию в 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) с детальным текстовым сопровождением — каждая тема включает примеры кода и пошаговые объяснения принципов работы многопоточности. После изучения материала вы проходите тесты на понимание концепций и выполняете практические задания — пишете код.

Программа:

  1. Начало
  2. Основы многопоточности
  3. Синхронизация потоков
  4. Продвинутая синхронизация
  5. Управление жизненным циклом потоков
  6. Task и асинхронное программирование
  7. Async/Await паттерн
  8. Параллельное программирование
  9. Окончание

Спойлер: Подробно 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 руб.