Sobes.tech
Junior — Middle

Explicați principalele diferențe dintre modurile de execuție sincrone și asincrone.

sobes.tech AI

Răspuns de la AI

Modul de execuție sincronic înseamnă că procesul sau firul de execuție efectuează sarcini secvențial, așteptând finalizarea fiecărei operațiuni înainte de a trece la următoarea. În acest mod, execuția este blocată până se obține rezultatul.

Modul asincron permite lansarea operațiunilor fără a aștepta finalizarea lor și continuarea altor sarcini. Rezultatele operațiunilor asincrone sunt procesate ulterior, de exemplu, prin callback-uri, promisiuni sau async/await.

Diferențele principale:

  • Blocare: codul sincron blochează firul, cel asincron nu.
  • Performanță: modul asincron este mai eficient în gestionarea operațiilor de intrare/ieșire, evitând inactivitatea.
  • Complexitate: codul asincron este mai dificil de înțeles și depanat.

Exemplu în Swift:

// Apel sincron
func fetchData() -> Data {
    // blochează firul până se obține datele
}

// Apel asincron
func fetchDataAsync(completion: @escaping (Data) -> Void) {
    DispatchQueue.global().async {
        let data = ... // obținerea datelor
        DispatchQueue.main.async {
            completion(data)
        }
    }
}

În iOS, asincronia este frecvent utilizată pentru solicitări de rețea și lucrul cu UI, pentru a nu bloca firul principal.