Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

150
Vistas
Suspender bloques de funciones subproceso principal

Me cuesta entender las rutinas. Esta es una configuración muy simple. Tanto longComputation como delay son funciones suspendidas. El primero bloquea el hilo principal, el segundo no. ¿Por qué?

 CoroutineScope(Dispatchers.Main).launch { val result = longComputation() // Blocks delay(10_000) // Doesn't block }
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Eso depende. ¿Qué hace longComputation exactamente? Cuando marca una función como suspend , esto no significa que no pueda incluir código de bloqueo en ella. Por ejemplo, echa un vistazo a este:

 suspend fun blockingSuspendFunction(){ BigInteger(1500, Random()).nextProbablePrime() }

El código dentro de la función de suspensión es obviamente algo que utiliza la CPU y bloquea a la persona que llama. Por convención , esto no debe hacerse porque si llama a una función de suspensión, espera que no bloquee el hilo:

Convención: las funciones de suspensión no bloquean el subproceso de la persona que llama. ( https://medium.com/@elizarov/blocking-threads-suspending-coroutines-d33e11bf4761 )

Para hacer que dicha función "se comporte como una función de suspensión", el bloqueo debe enviarse a otro subproceso de trabajo, lo que (por recomendación) debería ocurrir con withContext :

 suspend fun blockingSuspendFunction() = withContext(Dispatchers.Default) { BigInteger.probablePrime(2048, Random()) }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda