Junior — Middle
Jak je řízena konkurence úkolů při použití korutin v programovacím jazyce?
sobes.tech AI
Odpověď od AI
V Kotlinu umožňují korutiny spravovat konkurenční úkoly bez blokování vláken pomocí lehkých vláken provádění. Řízení se provádí přes:
- CoroutineScope — oblast viditelnosti pro korutiny, která řídí jejich životní cyklus.
- Dispatcher — určuje, na kterém vlákně nebo vláknovém poolu bude korutina spuštěna (například Dispatchers.IO pro vstup/výstup, Dispatchers.Default pro CPU-intenzivní úkoly).
- Job — objekt představující úkol korutiny, s jehož pomocí lze úkol zrušit nebo sledovat jeho stav.
Příklad spuštění několika konkurenčních korutin:
import kotlinx.coroutines.*
fun main() = runBlocking {
val job1 = launch(Dispatchers.Default) {
// Konkurenční úkol 1
delay(1000)
println("Úkol 1 dokončen")
}
val job2 = launch(Dispatchers.IO) {
// Konkurenční úkol 2
delay(500)
println("Úkol 2 dokončen")
}
joinAll(job1, job2) // Čekáme na dokončení obou úkolů
}
Tímto způsobem korutiny umožňují efektivně řídit konkurenci, přepínat mezi úkoly bez blokování vláken a používat dispatchery pro optimální rozložení zátěže.