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

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

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

Да, механизм семафора часто применяется для управления доступом к ограниченным ресурсам в многопоточных приложениях. В 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() // увеличиваем счетчик
}

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

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее