Junior — Middle
Jak je implementována asynchronnost při použití korutin?
sobes.tech AI
Odpověď od AI
Asynchronita v korutinách je dosažena pozastavením a obnovením provádění bez blokování vláken. Když korutina narazí na operaci, která může trvat čas (například síťový požadavek), je pozastavena (suspend), čímž uvolní vlákno pro jiné úkoly. Po dokončení operace se korutina obnoví ze stejného místa.
To je realizováno mechanismem funkcí suspend a kompilátorem, který korutiny převádí na konečné automaty stavů. Díky tomu lze psát asynchronní kód ve sekvenčním stylu bez explicitních zpětných volání.
Příklad v Kotlinu:
suspend fun fetchData(): String {
delay(1000) // pozastaví korutinu na 1 sekundu bez blokování vlákna
return "Data loaded"
}
fun main() = runBlocking {
val result = fetchData() // asynchronně čeká na výsledek
println(result)
}