Concorrenza strutturata e funzioni async
Definisca funzioni async , le chiami con await e comprenda la structured concurrency : le attività figlie terminano prima che l'ambito del genitore venga abbandonato.
Concorrenza strutturata e funzioni async è una lezione Swift Academy gratuita su CoddyKit. Questa è la lezione 1 di 3. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Swift Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Swift Academy include 3 lezioni in totale.
Perché async/await?
async/await consente di scrivere codice asincrono che si legge come codice sincrono. Con la concorrenza strutturata, i task figli sono legati alla durata di vita dell'ambito, evitando perdite.
La prima funzione asincrona
Una funzione async può usare await per attendere altro lavoro asincrono. Crei un Task negli script o nei playground per chiamarla.
// Simulate a short async delay, then return a value
func fetchNumber() async -> Int {
try? await Task.sleep(nanoseconds: 200_000_000) // ~200ms
return 42
}
// Call sites must use "await" from an async context or a Task
Task {
let n = await fetchNumber()
print("Fetched:", n) // 42
}Sospensione e ripresa
await sospende il task finché il risultato non è pronto, quindi l'esecuzione riprende ordinatamente dalla riga successiva.
func greet(after seconds: Double) async -> String {
let ns = UInt64(seconds * 1_000_000_000)
try? await Task.sleep(nanoseconds: ns)
return "Hello after \(Int(seconds))s"
}
Task {
print(await greet(after: 1.0))
print("Back on the same task after await.")
}Nozioni di base su async let
Utilizzi async let per avviare task figli. Appartengono all'ambito corrente e devono essere attesi prima di uscire dall'ambito.
// Run child tasks concurrently within the same scope
func fetchUser() async -> String { "Ana" }
func fetchScore() async -> Int { 90 }
Task {
async let name = fetchUser()
async let score = fetchScore()
// Both start immediately; await joins them before use
let summary = await "\(name): \(score)"
print(summary) // "Ana: 90"
// Scope ends -> child tasks are awaited automatically (structured)
}I genitori attendono i figli
Strutturata significa che i task genitori non possono terminare prima dei figli. In questo modo si evita il lavoro orfano e la durata di vita dei task rimane prevedibile.
// Parent Task encapsulates children lifetimes
func loadProfile() async -> String {
async let name = fetchUser()
async let score = fetchScore()
return await "\(name) (\(score))"
}
Task {
let profile = await loadProfile()
print(profile) // e.g., "Ana (90)"
// loadProfile does not return until its children are done
}Linee guida
Suggerimenti:
- Ragioni in termini di task, non di thread.
- Utilizzi async let per il lavoro tra task fratelli; usi
awaitprima di uscire dall'ambito. - Utilizzi
Task.sleepper le pause nelle dimostrazioni; nelle app reali attenda l'I/O di rete o dei file.
Definizione di await
Verifica rapida: che cosa fa await?
Riepilogo
Riepilogo: contrassegni le funzioni come async e le chiami con await. Utilizzi async let per avviare task fratelli e si affidi alla concorrenza strutturata per fare in modo che i figli terminino prima dei genitori.
Domande Frequenti
La lezione «Concorrenza strutturata e funzioni async» è gratuita?
Sì — il testo completo di «Concorrenza strutturata e funzioni async» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Swift Academy, passa a CoddyKit PRO. Il corso Swift Academy include 3 lezioni in totale.
Cosa imparerò in «Concorrenza strutturata e funzioni async»?
Definisca funzioni async , le chiami con await e comprenda la structured concurrency : le attività figlie terminano prima che l'ambito del genitore venga abbandonato. Eserciti Swift Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Swift Academy?
Non è richiesta alcuna esperienza precedente. Swift Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 3.
Quanto tempo richiede la lezione «Concorrenza strutturata e funzioni async»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Swift Academy?
Sì. Ogni lezione Swift Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Concorrenza strutturata e funzioni async
- async let, Task e cancellazione
- try await e propagazione degli errori