Junior — Middle
¿Cómo se gestiona la competencia de tareas al usar corutinas en un lenguaje de programación?
sobes.tech AI
Respuesta de la IA
En Kotlin, las corrutinas permiten gestionar tareas concurrentes sin bloquear hilos, utilizando hilos ligeros de ejecución. La gestión se realiza a través de:
- CoroutineScope — ámbito de visibilidad para las corrutinas, que controla su ciclo de vida.
- Dispatcher — determina en qué hilo o grupo de hilos se ejecutará la corrutina (por ejemplo, Dispatchers.IO para entrada/salida, Dispatchers.Default para tareas intensivas en CPU).
- Job — objeto que representa una tarea de la corrutina, con el cual se puede cancelar o seguir su estado.
Ejemplo de lanzamiento de varias corrutinas concurrentes:
import kotlinx.coroutines.*
fun main() = runBlocking {
val job1 = launch(Dispatchers.Default) {
// Tarea concurrente 1
delay(1000)
println("Tarea 1 completada")
}
val job2 = launch(Dispatchers.IO) {
// Tarea concurrente 2
delay(500)
println("Tarea 2 completada")
}
joinAll(job1, job2) // Espera a que ambas tareas terminen
}
De esta forma, las corrutinas permiten gestionar eficientemente la concurrencia, alternando entre tareas sin bloquear hilos y usando despachadores para una distribución óptima de la carga.