Junior — Middle
Vai esat izmantojis semafora mehānismu savos projektos resursu konkurences pārvaldībai?
sobes.tech AI
Atbilde no AI
Jā, semafora mehānisms bieži tiek izmantots piekļuves pārvaldībai pie ierobežotiem resursiem daudzšūnu programmās. Piemēram, iOS var izmantot DispatchSemaphore, lai ierobežotu vienlaicīgi izpildāmo uzdevumu skaitu.
DispatchSemaphore lietošanas piemērs:
let semaphore = DispatchSemaphore(value: 2) // ļauj 2 uzdevumus vienlaicīgi
DispatchQueue.global().async {
semaphore.wait() // samazina skaitītāju, gaida, ja tas ir 0
// kritiskā sadaļa
print("Uzdevums sākās")
sleep(2) // darba simulācija
print("Uzdevums pabeigts")
semaphore.signal() // palielina skaitītāju
}
Šī pieeja palīdz izvairīties no sacensību apstākļiem un kontrolēt konkurenci, strādājot ar ierobežotiem resursiem, piemēram, piekļūstot datu bāzei vai veicot tīkla pieprasījumus.