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