Многопоточность и Асинхронность

Темы:

  • Понимание терминов Процесс, Поток, Пулл потоков, Мертвая блокировка

  • Понимание концепций Многопоточного программирования, Асинхронного программирования и Параллелизма

  • Класс 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> потокобезопасным?

Источники:

Книги:

Статьи:

Last updated

Was this helpful?