Sobes.tech
Назад к вопросам
Junior — Middle
81

Применяли ли вы механизм семафора в своих проектах для управления конкуренцией ресурсов?

Компании, где спрашивали
VKVK

Ответ от нейросети

sobes.tech AI

Да, механизм семафора часто применяется для управления доступом к ограниченным ресурсам в многопоточных приложениях. В iOS, например, можно использовать DispatchSemaphore для ограничения количества одновременно выполняющихся задач.

Пример использования DispatchSemaphore:

let semaphore = DispatchSemaphore(value: 2) // разрешаем одновременно 2 задачи

DispatchQueue.global().async {
    semaphore.wait() // уменьшаем счетчик, если 0 — ждем
    // критическая секция
    print("Task started")
    sleep(2) // имитация работы
    print("Task finished")
    semaphore.signal() // увеличиваем счетчик
}

Такой подход помогает избежать гонок данных и контролировать конкуренцию при работе с ограниченными ресурсами, например, при доступе к базе данных или сетевым запросам.