Sobes.tech
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.