7 вопросов по SemaphoreSlim с технических собеседований
7 вопросов1634 компании353 технологии
Что проверяют на интервью
Как устроена подборка
На странице собраны вопросы по SemaphoreSlim — от проверки базовых принципов до практического применения и архитектурных решений. В подборке чаще встречаются темы: semaphoreslim, semaphore, async.
lock обеспечивает взаимное исключение, для простого счётчика подходит Interlocked.Increment. Await внутри lock запрещён; для асинхронного ожидания обычно используют SemaphoreSlim.WaitAsync.
SemaphoreSlim полезен для ограничения числа одновременных обращений к внешнему API, например до четырёх, без блокировки потоков, ожидающих свободное место.
Рост с 300 до 700 сообщений в секунду нужно объяснять измеренными изменениями, а не самими названиями ConcurrentDictionary и SemaphoreSlim. Без данных проекта нельзя установить причину ускорения.
SemaphoreSlim координирует только потоки одного процесса. При нескольких экземплярах приложения каждый может одновременно пересчитать один и тот же отсутствующий ключ кеша.
Многопоточность позволяет нескольким потокам выполнять работу конкурентно, а на нескольких ядрах — параллельно. Общие изменяемые данные требуют синхронизации и продуманного владения.
В контексте асинхронного программирования в C# классы Semaphore и SemaphoreSlim используются для ограничения количества потоков, которые могут одновременно получить доступ к ресурсу, но между ними есть важные отличия:
Semaphore и SemaphoreSlim синхронизация потоков в .NET Semaphore — системный объект ядра ОС для межпроцессной синхронизации SemaphoreSlim — облегчённый механизм, работающий внутри одного процесса Semaphore потребляет…