Problemas de corrutina: cerrando la brecha entre los mundos de corrutina y no corrutina | Blog | bol.com

Las corrutinas son una forma maravillosa de escribir código asincrónico y sin bloqueo en Kotlin. Piensa en ellos como hilos ligeros, porque eso es exactamente lo que son. Los subprocesos ligeros tienen como objetivo reducir el cambio de contexto, una operación relativamente costosa. Además, puedes suspenderlos y cancelarlos fácilmente en cualquier momento. Suena genial, ¿verdad?

Después de darte cuenta de todos los beneficios de las corrutinas, decidiste probarlas. Escribiste tu primera rutina y la llamaste desde una función regular no suspendible… ¡solo para descubrir que tu código no se compila! Ahora está buscando una forma de llamar a su rutina, pero no hay explicaciones claras sobre cómo hacerlo. Parece que no estás solo en esta búsqueda: ¡este desarrollador se frustró tanto que abandonó Kotlin por completo!

¿Esto te suena familiar? ¿O todavía está buscando las mejores formas de vincular corrutinas a su código que no es de rutina? Si es así, entonces esta publicación de blog es para ti. En este artículo, compartiremos el problema de las corrutinas más fundamental con el que todos nos topamos durante nuestro viaje con las corrutinas: ¿Cómo llamar a las corrutinas desde un código de bloqueo normal?

Mostraremos tres formas diferentes de cerrar la brecha entre el mundo corutinado y no corutinado:

  • GlobalScope (mejor no)
  • ejecutarBloqueo (ten cuidado)
  • Suspender por completo (adelante)

Antes de profundizar en estos métodos, le presentaremos algunos conceptos que le ayudarán a comprender las diferentes formas.

Suspender, bloquear y no bloquear

Las corrutinas se ejecutan en subprocesos y los subprocesos se ejecutan en una CPU. Para comprender mejor nuestros ejemplos, es útil visualizar qué rutina se ejecuta en qué subproceso y en qué CPU se ejecuta ese subproceso. Por lo tanto, compartiremos nuestra imagen mental con usted con la esperanza de que también le ayude a comprender mejor los ejemplos.

Como mencionamos antes, un hilo se ejecuta en una CPU. Comencemos visualizando esa relación. En la siguiente imagen, podemos ver que el subproceso 2 se ejecuta en la CPU 2, mientras que el subproceso 1 está inactivo (al igual que la primera CPU):


Source link

About David Lopez

Informático y experto en redes. Redactor en varios blogs tecnológicos desde hace 4 años y ahora en Steamachine.net

Check Also

¿Qué es una prueba de detección OCR y cómo funciona?

Si dirige un negocio que maneja muchos documentos en papel, conoce el dolor y la …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *