Sobes.tech
Junior — Middle

Cum se diferențiază utilizarea corutinelor și a firelor în implementarea sarcinilor asincrone?

sobes.tech AI

Răspuns de la AI

Firele (Threads) sunt obiecte de sistem care permit executarea mai multor sarcini în paralel, fiecare cu propriul său stiv de apeluri și context de execuție. Crearea și comutarea între fire este destul de costisitoare în resurse, iar un număr mare de fire poate duce la o suprasarcină.

Corutinele (Coroutines) sunt componente ușoare care permit suspendarea și reluarea execuției funcțiilor fără a crea fire noi. Ele funcționează în cadrul unuia sau mai multor fire, dar permit scrierea de cod asincron secvențial și gestionarea eficientă a sarcinilor fără blocări.

Diferențele principale:

  • Firele sunt grele, corutinele sunt ușoare.
  • Firele necesită schimbarea contextului la nivelul sistemului de operare, corutinele la nivelul limbajului.
  • Corutinele facilitează scrierea de cod asincron mai simplu și mai lizibil.

Exemplu de corutină în Kotlin pentru Android:

GlobalScope.launch(Dispatchers.IO) {
    val data = fetchDataFromNetwork() // operație asincronă
    withContext(Dispatchers.Main) {
        updateUI(data)
    }
}