¿Pueden `SendChannel.offer`,` CompletableDefernetworking.complete` y similares llamarse corutinas externas?

CompletableDefernetworking documentation de CompletableDefernetworking dice

Todas las funciones en esta interfaz y en todas las interfaces derivadas de ella son seguras para subprocesss y se pueden invocar de forma segura desde corutinas concurrentes sin synchronization externa.

¿Es seguro llamar a estas funciones fuera de cualquier coroutine?

Para SendChannel<E> , la offer y el close no se suspend y, por lo tanto, se pueden llamar sintácticamente fuera de las corutinas, ¿pero es realmente seguro hacerlo?

Si se necesita una coroutine, ¿cuál es la forma más económica de comenzar una: launch(Unconfined) ?

Es seguro llamar a offer y close desde cualquier lugar. Eso es lo que la documentation significa decir con la frase "son seguros para subprocesss".

Una de las razones por las que estos methods están incluidos en las API de canal es para permitir la integración de corutinas con el mundo regular que no se basa en rutinas que se basa en varias devoluciones de llamada y controlleres de events. Puede ver el ejemplo real de dicha integración en esta guía sobre la progtwigción de la interfaz de usuario con corrutinas .

  • Limpiar el uso de Coroutines en Kotlin con el soporte de testing unitaria
  • ¿Cómo se ejecuta el método de suspensión a través de la reflexión?
  • Kotlin coroutine traga exception
  • ¿Cuál es la forma correcta de usar las extensiones de Anko Coroutines?
  • ¿Cómo se organizan múltiples corrutines y bloques de expectativas en una testing de Kotlin Spek?
  • ¿Por qué es imposible utilizar las references de methods para las funciones `suspender` en Kotlin?
  • Multithreading usando Kotlin Coroutines
  • Cómo usar código que se basa en ThreadLocal con corotines de Kotlin
  • Kotlin coroutines y Spring Framework 5 types reactivos
  • Fan-out / fan-in - canal de resultado de cierre
  • ¿Hay alguna forma de get el comportamiento de FixedTreadPool usando corutinas?