Junior — Middle
Използвали ли сте механизма на семафора в проектите си за управление на конкуренцията на ресурси?
sobes.tech AI
Отговор от AI
Да, механизмът на семафора често се използва за управление на достъпа до ограничени ресурси в многонишкови приложения. Например, в iOS може да се използва DispatchSemaphore за ограничаване на броя на едновременно изпълняваните задачи.
Пример за използване на DispatchSemaphore:
let semaphore = DispatchSemaphore(value: 2) // разрешава 2 задачи едновременно
DispatchQueue.global().async {
semaphore.wait() // намалява брояча, чака ако е 0
// критична секция
print("Задачата започна")
sleep(2) // симулация на работа
print("Задачата приключи")
semaphore.signal() // увеличава брояча
}
Този подход помага да се избегнат състезателни условия и да се контролира конкуренцията при работа с ограничени ресурси, например при достъп до база данни или мрежови заявки.