Sobes.tech
Junior

Šta je izvršavanje koda van glavne niti?

sobes.tech АИ

Одговор од АИ

Izvršavanje koda van glavne niti znači izvršavanje zadataka u pozadini, bez blokiranja glavne niti korisničkog interfejsa aplikacije. Ovo omogućava održavanje odzivnosti korisničkog interfejsa, posebno tokom dužih ili resursno zahtevnih operacija, kao što su mrežni zahtevi, obrada podataka ili rad sa fajlovima.

Glavni mehanizmi u iOS za izvršavanje koda van glavne niti:

  • Grand Central Dispatch (GCD): API niskog nivoa zasnovan na C za upravljanje paralelnim izvršavanjem koda. Koristi redove za upravljanje zadacima.

    DispatchQueue.global(qos: .userInitiated).async {  
        // Kod koji se izvršava u pozadini  
        DispatchQueue.main.async {  
            // Kod koji se izvršava na glavnoj niti (npr. ažuriranje UI)  
        }  
    }  
    
  • Redovi operacija (Operation/OperationQueue): Objektno-orijentisana apstrakcija iznad GCD. Omogućava kreiranje složenijih operacija, upravljanje zavisnostima između njih i njihovo otkazivanje.

    let operationQueue = OperationQueue()  
    operationQueue.addOperation {  
        // Kod koji se izvršava kao operacija  
    }  
    
  • Glumci (Konkurentnost): Uvedeni u Swift 5.5 kao deo modela konkurentnosti. Obezbeđuju siguran pristup promenljivom stanju iz različitih niti, sprečavajući uslove trke.

    actor DataManager {  
        private var data: [String] = []  
    
        func addData(_ item: String) {  
            data.append(item)  
        }  
    }  
    
    // Korišćenje glumca  
    // Task {  
    //    await dataManager.addData("Novi element")  
    // }  
    
  • Niti (Posix/NSThread): Niskonivo pristup za kreiranje i upravljanje nitima. U opštem slučaju, ne preporučuje se za direktnu upotrebu u modernom razvoju iOS-a zbog složenosti upravljanja i potencijalnih problema sa sinhronizacijom.