Sobes.tech
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() // увеличава брояча
}

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