Sobes.tech
Junior

У чему се састоји разлика између асинхроности и мултитрединга?

sobes.tech АИ

Одговор од АИ

Asinhronost je tehnika koja omogućava da se nastavite sa izvršavanjem glavne niti dok se neka operacija odvija u pozadini, čekajući njen završetak bez blokiranja.

Višestruki niti su sposobnost programa da izvršava više delova svog rada ( niti) istovremeno ili pseudo-isto vreme (na procesorima sa jednim jezgrom).

Ključna razlika:

  • Višestruki niti — način paralelnog izvršavanja zadataka koristeći više niti.
  • Asinhronost — način za upravljanje operacijama koje zahtevaju čekanje (npr. I/O, mrežni zahtevi), bez blokiranja glavne niti.

Asinhronost može biti implementirana i sa i bez višestrukih niti (npr. putem petlji događaja ili korutina).

Primer korišćenja GCD za asinhroni rad na drugoj niti:

// Slanje bloka koda za izvršenje u pozadinsku red
DispatchQueue.global(qos: .background).async {
    // Ovde se izvršava duga operacija u pozadinskoj niti
    let result = performBackgroundOperation() 

    // Povratak na glavnu nit za ažuriranje UI
    DispatchQueue.main.async {
        updateUI(with: result)
    }
}

func performBackgroundOperation() -> String {
    // Simulacija dužeg rada
    sleep(2) 
    return "Operacija završena"
}

func updateUI(with result: String) {
    // Ažuriranje elemenata interfejsa u glavnoj niti
    print(result)
}