Junior — Middle
Kādās situācijās ir lietderīgi izmantot Semaphore mehānismu pavedienu sinhronizācijai?
sobes.tech AI
Atbilde no AI
Semaphore (semaforu) mehānisms tiek izmantots, lai ierobežotu vienlaicīgi pieejamo pavedienu skaitu konkrētam resursam vai kritiskajai sekcijai.
Ieteicams izmantot semaforu, kad:
- nepieciešams ierobežot vienlaicīgu operāciju skaitu, piemēram, piekļuvi savienojumu baseinam vai ierobežotam failu skaitam.
- ir nepieciešams kontrolēt paralēlismu, lai izvairītos no sistēmas pārslogojuma.
- ir nepieciešama pavedienu sinhronizācija, kad vairāki pavedieni gaida resursa atbrīvošanu.
iOS semafori bieži tiek izmantoti asinhrono uzdevumu pārvaldībai, piemēram, gaidot vairākas operācijas pabeigšanu vai ierobežojot vienlaicīgi izpildāmo uzdevumu skaitu.
Swift piemērs, izmantojot DispatchSemaphore:
let semaphore = DispatchSemaphore(value: 3) // maksimāli 3 pavedieni vienlaicīgi
func accessResource() {
semaphore.wait() // samazina skaitītāju, ja tas ir 0, pavediens tiek bloķēts
// Darbs ar resursu
print("Pavediens ieguva piekļuvi")
sleep(1) // darba simulācija
semaphore.signal() // palielina skaitītāju, atbrīvojot vietu
}
for _ in 1...10 {
DispatchQueue.global().async {
accessResource()
}
}
Šajā piemērā ne vairāk kā 3 pavedieni var vienlaicīgi strādāt ar resursu.