Sobes.tech
Назад к вопросам
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(); // освобождаем разрешение
}

Таким образом, семафор помогает контролировать параллелизм и предотвращать гонки за ресурсы.