Sobes.tech
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)
}