Назад к вопросам
Junior — Middle
66
Каково назначение семафора в многопоточных приложениях?
Компании, где спрашивали
айтеко
Ответ от нейросети
sobes.tech AI
Семафор в многопоточных приложениях используется для управления доступом к ограниченному числу ресурсов.
Он представляет собой счетчик, который показывает, сколько потоков могут одновременно получить доступ к ресурсу. Когда поток хочет получить доступ, он пытается "захватить" семафор:
- Если счетчик больше нуля, он уменьшается на единицу, и поток продолжает работу.
- Если счетчик равен нулю, поток блокируется до тех пор, пока другой поток не освободит семафор.
Пример на Java:
import java.util.concurrent.Semaphore;
Semaphore semaphore = new Semaphore(3); // разрешаем одновременно 3 потока
try {
semaphore.acquire(); // пытаемся получить разрешение
// критическая секция
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
semaphore.release(); // освобождаем разрешение
}
Таким образом, семафор помогает контролировать параллелизм и предотвращать гонки за ресурсы.