Многопоточность и Асинхронность
Темы:
Понимание терминов Процесс, Поток, Пулл потоков, Мертвая блокировка
Понимание концепций Многопоточного программирования, Асинхронного программирования и Параллелизма
Класс Thread: Start, Join, Abort, Sleep | Фоновые и активные потоки
Ключевые слова async и await, Syncronization Context
Класс Task, Использование методов Run, Delay, WhenAny, WhenAll, ContinueWith, Обработка исключений, AggregateException
Необходимость использования синхронизации потоков | Простая синхронизация потоков: ключевое слово lock, Monitor.Enter, Monitor.Exit, Interlocked
PLINQ: Parallel.For, Parallel.ForEach, AsParallel, AsOrdered, WithCancellation
Сихнронизация потоков: Mutex, Semaphor, AutoResetEvent, ManualResetEvent, Reader/Writer Locks, volatile
Использование потокобезопасных коллекций: ConcurrentBag, IProducerConsumerCollection, ConcurrentDictionary
Тестирование асинхронных методов
Task Scheduling
Неизменяемые коллекции: ImmutableList, ImmutableDictionary, ImmutableHashSet
Контрольные вопросы:
Что такое Виртуальное адресное пространство?
Почему большое количество параллельных потоков могут ухудшить производительность приложения?
В чем разница между Потоком и Процессом?
Когда возникает Мертвая блокировка?
В чем разница между Thread.Sleep и Task.Delay?
В чем разница между Lock и Monitor?
В чем разница между Thread и Task?
Почему неизменяемые типы являются потокобезопасными?
В чем разница между Многопоточным и Асинхронным программированием?
Когда нужно думать о синхронизации потоков?
В чем разница между механизмами синхронизации Mutex и Semaphore?
Почему примитивные операции инкремента или присваивания нужно синхронизировать классом Interlocked?
Что такое ReaderWriterLockSlim?
Как создать потокобезопасный Синглтон?
Является ли класс Lazy<T> потокобезопасным?
Источники:
Книги:
C# in a Nutshell by Joe Albahari, Ben Albahari
CLR via C# by Jeffrey Richter
Concurrency in C# Cookbook by Stephen Cleary
Статьи:
Last updated
Was this helpful?