Junior — Middle
Koji tok koristi async/await prilikom poziva unutar metode pokrenute pomoću Task?
sobes.tech АИ
Одговор од АИ
Kada koristite async/await unutar metode pokrenute pomoću Task na iOS-u (na primer, korišćenjem Swift Concurrency), izvršavanje asinhronog koda se dešava u kontekstu koji upravlja planer zadataka (Task Scheduler).
Sam async/await ne vezuje kod za određeni tok. Umesto toga, tokom čekanja (await), trenutni tok može biti oslobođen za druge zadatke, a nastavak metode nakon await može se izvršiti na bilo kojem dostupnom toku iz bazena tokova ili na istom toku, ako je to moguće.
Stoga, tok na kojem se izvršava kod nakon await nije garantovan i zavisi od planera. Ovo omogućava efikasno korišćenje resursa i ne blokira glavni tok (na primer, UI tok).
Primer:
Task {
print("Početak na toku: \(Thread.current)")
await someAsyncFunction()
print("Nastavak na toku: \(Thread.current)")
}
Izlaz može prikazati različite tokove pre i posle await-a.