Встречается на собеседованиях • сегодня
Что такое Semaphore
Семафор — это примитив синхронизации, который ограничивает количество потоков, одновременно получающих доступ к ресурсу. В отличие от lock, который позволяет работать только одному потоку, семафор может разрешать доступ N потокам.
Основные методы:
WaitOne()— уменьшает счетчик семафора (если счетчик = 0, блокирует поток)Release()— увеличивает счетчик (разблокирует ожидающие потоки)
Пример:
csharp
Semaphore semaphore = new Semaphore(2, 2); // Максимум 2 потока одновременно
void AccessResource()
{
semaphore.WaitOne();
try
{
// Работа с ресурсом
}
finally
{
semaphore.Release();
}
}Важно: семафоры могут быть именованными (для межпроцессного взаимодействия) и локальными. Также есть SemaphoreSlim — легковесная версия для внутрипроцессной синхронизации.
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы
