C#: Разговоры о многопоточности без воды

7 участников

О чём курс

О чём курс

Сергей Камянецкий разбирает многопоточность и параллельное программирование в 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# и микросервисной архитектуре.

Программа обучения

  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. Окончание
Складчина создана 11 апреля 2026 г. · описание обновлено 25 октября 2026 г.

Теги курса

Профессии
Инструменты

Другие материалы автора 7

СК Сергей Камянецкий Все материалы
1 163 ₽ 6 500 ₽