Sobes.tech
Junior

Mis vahe on asünkroonsusel ja mitmetöötlusel?

sobes.tech AI

Vastus AI-lt

Asünkronilisus — see tehnika võimaldab jätkata põhivoogu, samal ajal kui taustal toimub mingi operatsioon, ootamata selle lõpetamist ilma blokeerimata.

Mitme-kiiruse (multithreading) võimekus on programmi võime täita mitu oma tööosa (kiirust) samaaegselt või pseudo-samaaegselt (ühe tuumaga protsessoritel).

Peamine erinevus:

  • Mitme-kiiruse — meetod ülesannete paralleelseks täitmiseks, kasutades mitut kiirust.
  • Asünkroonsus — meetod operatsioonide haldamiseks, mis nõuavad ootamist (näiteks I/O, võrgupäringud), ilma põhivoogu blokeerimata.

Asünkroonsust saab rakendada nii mitme-kiiruse kasutamisega (näiteks GCD või OperationQueue kaudu), kui ka ilma selleta (näiteks sündmuste tsüklite või korutinite kaudu).

Näide GCD kasutamisest teise kiiruse asünkroonseks tööks:

// Koodiploki saatmine täitmiseks taustajärjekorras
DispatchQueue.global(qos: .background).async {
    // Siin toimub pikk operatsioon
    let result = performBackgroundOperation() 

    // Tagasi peamisele kiirusele UI uuendamiseks
    DispatchQueue.main.async {
        updateUI(with: result)
    }
}

func performBackgroundOperation() -> String {
    // Pika töö simulatsioon
    sleep(2) 
    return "Operatsioon lõpetatud"
}

func updateUI(with result: String) {
    // Interfeysielementide uuendamine peamise kiirusega
    print(result)
}