Многопоточность позволяет нескольким потокам выполнять работу конкурентно, а на нескольких ядрах — параллельно. Общие изменяемые данные требуют синхронизации и продуманного владения.
Что такое многопоточность, какие задачи она решает и какие примитивы синхронизации вы знаете? Чем SemaphoreSlim отличается от Semaphore и что такое Mutex?
Многопоточность позволяет нескольким потокам выполнять работу конкурентно, а на нескольких ядрах — параллельно. Общие изменяемые данные требуют синхронизации и продуманного владения.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Многопоточность позволяет нескольким потокам выполнять работу конкурентно, а на нескольких ядрах — параллельно. Общие изменяемые данные требуют синхронизации и продуманного владения.
Основные инструменты .NET: lock/Monitor, Interlocked, SemaphoreSlim, Semaphore, Mutex и события ожидания. Semaphore ограничивает число одновременных участников; именованный системный семафор может использоваться между процессами при поддержке платформы.
SemaphoreSlim предназначен для внутрипроцессной синхронизации и поддерживает WaitAsync без блокировки ожидающего потока. Mutex обеспечивает исключительное владение с привязкой к потоку, а именованный — и межпроцессную координацию. Для асинхронного кода обычно удобнее SemaphoreSlim. Потоки не заменяют async I/O: ожидание сети не требует выделять отдельный поток на каждый запрос.