🏆
.NET Developer Roadmap
  • README
  • Tech Skills
    • Язык C#
      • LINQ
      • Многопоточность и Асинхронность
      • Expression Trees
      • Рефлексия
      • Диагностика
    • Системы контроля версий
    • Технологии
      • .Net Framework / .Net Core
      • Фреймворки доступа к данным
        • Dapper
        • Entity Framework
      • Task Scheduling
      • Good to Know Libraries
    • Обеспечение качества
      • Тестирование
      • Рефакторинг
      • Code Review
      • Метрики и мониторинг
      • Работа с техническим долгом
    • Базы Данных
      • T-SQL
      • NoSQL
      • Search Engines
      • Cloud Databases
    • Принципы и методологии
      • Шаблоны проектирования
      • Шаблоны уровня доступа к данным
      • ООП
      • SOLID
      • Inversion of Control
      • Архитектурные шаблоны
        • Command Query Responsibility Segregation, CQRS
        • Domain-driven design, DDD
    • Построение Веб-сервисов
      • HTTP, REST, Веб-фреймворки
      • Логирование
      • Кэширование
      • Авторизация и Аутентификация
      • Web Servers
    • Алгоритмы и Структуры Данных
    • Распределённые системы и Микросервисы
      • Шаблоны проектирования
      • Семантики доставки
      • Message Brokers
      • Message-Bus
      • Docker
      • Kubernetes
      • Консенсус в распределенных системах
    • Автоматизация цикла разработки
    • Полезные ссылки
  • Personal Skills
    • Методологии разработки
Powered by GitBook
On this page
  • Темы:
  • Контрольные вопросы:
  • Источники:

Was this helpful?

  1. Tech Skills
  2. Язык C#

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

Темы:

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

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

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

Источники:

Книги:

  • CLR via C# by Jeffrey Richter

Статьи:

PreviousLINQNextExpression Trees

Last updated 5 years ago

Was this helpful?

by Joe Albahari, Ben Albahari

by Stephen Cleary

C# in a Nutshell
Concurrency in C# Cookbook
Основы многопоточности в .NET Framework
Введение в PLINQ
Многопоточное vs асинхронное программирование
.NET: Инструменты для работы с многопоточностью и асинхронностью
ConfigureAwait: часто задаваемые вопросы
Parallel Computing - It's All About the SynchronizationContext