Junior — Middle
U kojim situacijama je preporučljivo koristiti mehanizam Semaphore za sinhronizaciju niti?
sobes.tech АИ
Одговор од АИ
Механизам Semaphore (семафор) се користи за ограничење броја нити које истовремено приступају одређеном ресурсу или критичној секцији.
Препоручљиво је користити семафор када:
- Потребно је ограничити број истовремених операција, на пример, приступ пулу веза или ограниченом броју датотека.
- Потребно је контролисати паралелизам како би се избегло пренапање система.
- Потребна је синхронизација нити, када више нити треба да чекају ослобађање ресурса.
У iOS-у, семафори се често користе за управљање асинхроним задацима, на пример, да се чека на завршетак више операција или да се ограничи број истовремено извршаваних задатака.
Пример коришћења DispatchSemaphore у Swift-у:
let semaphore = DispatchSemaphore(value: 3) // максимум 3 нити истовремено
func accessResource() {
semaphore.wait() // смањује бројач, ако је 0, нит се блокира
// Рад са ресурсом
print("Нит је добила приступ")
sleep(1) // симулација рада
semaphore.signal() // повећава бројач, ослобађа место
}
for _ in 1...10 {
DispatchQueue.global().async {
accessResource()
}
}
У овом примеру, највише 3 нити могу истовремено радити са ресурсом.