Назад к вопросам
VK
Junior — Middle
81
Применяли ли вы механизм семафора в своих проектах для управления конкуренцией ресурсов?
Компании, где спрашивали
Ответ от нейросети
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() // увеличиваем счетчик
}
Такой подход помогает избежать гонок данных и контролировать конкуренцию при работе с ограниченными ресурсами, например, при доступе к базе данных или сетевым запросам.