Разработка на C# для начинающих #19: Введение в многопоточность — потоки, состояния гонки и почем...
Автор: Benjamin Day
Загружено: 2025-12-12
Просмотров: 77
Ваш код по умолчанию выполняется в одном потоке. Но это скоро изменится. Многопоточность повышает производительность, но при этом порождает ошибки, которых вы раньше никогда не встречали.
Что вы узнаете:
• Что такое поток на самом деле (и чем он не является)
• Почему у вашего процессора несколько ядер
• Создание потоков с помощью new Thread()
• Состояние гонки — ошибка, которая иногда работает
• Почему общие данные + несколько потоков = катастрофа
• Ключевое слово lock и синхронизация потоков
• Взаимоблокированные операции для атомарных обновлений
• Взаимоблокировки — когда потоки ждут бесконечно
• Почему использование обычных потоков — это старый способ
Ключевые выводы:
• Потоки совместно используют память — в этом проблема
• Состояния гонки проходят тесты, но приводят к сбою в продакшене
• lock сериализует доступ (один поток за раз)
• Взаимоблокировка быстрее, чем lock, для простых операций
• Всегда блокируйте один и тот же объект для общих данных
• Взаимоблокировки возникают, когда порядок блокировок различается
• Современный C# использует задачи, а не обычные потоки
Мы создадим:
• Многопоточный счетчик (и посмотрим, как он сломается)
• Демонстрация состояния гонки
• Потокобезопасный счетчик с блокировкой
• Сценарий взаимоблокировки (и как его избежать)
Предыдущее видео: Подробнее LINQ Power
Следующее видео: Потокобезопасные коллекции
► Полный плейлист: • C# and .NET from Scratch - Complete Beginn...
► Репозиторий кода: https://github.com/benday-inc/csharp-...
Наконец-то поняли, почему многопоточность сложна? Нажмите кнопку «Нравится»!
Подпишитесь и включите уведомления — дальше мы разберемся с потокобезопасными коллекциями!
Какая у вас самая ужасная история о состоянии гонки? Расскажите в комментариях!
#CSharp #Многопоточность #Потоки #DotNet #Программирование #СостояниеГонки #УчебникПоПрограммированию #НаучисьПрограммировать
0:00 Введение в многопоточность
1:19 Ваш код никогда не бывает по-настоящему один
1:45 Проверка потоков
2:32 Создание потока (старый способ)
3:22 Что может пойти не так?
3:50 Состояние гонки — скрытая ошибка
4:36 Как происходят потерянные обновления
5:19 Решение: оператор блокировки
5:42 Блокировка — скорость без блокировок
6:35 Что на самом деле потокобезопасно?
7:26 Взаимная блокировка — когда блокировки блокируются
8:19 Чего не следует делать при многопоточности
9:27 Многопоточность — это действительно сложно
9:54 Предварительный обзор потокобезопасных коллекций
10:37 В: Когда мне действительно нужно беспокоиться о многопоточности? 11:32 Основные выводы
12:35 Практическое задание
Доступные форматы для скачивания:
Скачать видео mp4
-
Информация по загрузке: