Что такое многопоточность, какие задачи она решает и какие примитивы синхронизации вы знаете? Чем SemaphoreSlim отличается от Semaphore и что такое Mutex?

Многопоточность позволяет нескольким потокам выполнять работу конкурентно, а на нескольких ядрах — параллельно. Общие изменяемые данные требуют синхронизации и продуманного владения.

Короткий ответ

Что ответить на собеседовании

Многопоточность позволяет нескольким потокам выполнять работу конкурентно, а на нескольких ядрах — параллельно. Общие изменяемые данные требуют синхронизации и продуманного владения.

Подробный разбор

Ответ с пояснениями

Многопоточность позволяет нескольким потокам выполнять работу конкурентно, а на нескольких ядрах — параллельно. Общие изменяемые данные требуют синхронизации и продуманного владения.

Основные инструменты .NET: lock/Monitor, Interlocked, SemaphoreSlim, Semaphore, Mutex и события ожидания. Semaphore ограничивает число одновременных участников; именованный системный семафор может использоваться между процессами при поддержке платформы.

SemaphoreSlim предназначен для внутрипроцессной синхронизации и поддерживает WaitAsync без блокировки ожидающего потока. Mutex обеспечивает исключительное владение с привязкой к потоку, а именованный — и межпроцессную координацию. Для асинхронного кода обычно удобнее SemaphoreSlim. Потоки не заменяют async I/O: ожидание сети не требует выделять отдельный поток на каждый запрос.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее