2 puntos por GN⁺ 2023-07-18 | 1 comentarios | Compartir por WhatsApp
  • Artículo que analiza la necesidad y la forma de un paquete de corutinas para Go
  • Las corutinas son un patrón de concurrencia que se ejecuta simultáneamente en pilas distintas y permiten datos compartidos y puntos de sincronización explícitos
  • El artículo ofrece ejemplos de corutinas en Lua y Python, y destaca las diferencias entre ambos lenguajes
  • Al comparar corutinas, hilos y generadores, las corutinas ofrecen concurrencia sin paralelismo
  • El artículo explora casos de uso de corutinas en Go, como la iteración de colecciones genéricas
  • Presenta una implementación sencilla de corutinas en Go usando canales y goroutines
  • Incluye ejemplos de uso de corutinas, entre ellos un parser de cadenas y un cribado de números primos
  • El artículo concluye con una discusión sobre la posibilidad de una implementación optimizada de corutinas en el runtime de Go
  • Las corutinas se usan para crear flujos de control concurrentes que se ejecutan al mismo tiempo sin ser paralelos
  • El artículo explica la diferencia entre corutinas y goroutines
  • Las corutinas pueden usarse para crear pipelines y filtros para el procesamiento de datos
  • Ofrece un ejemplo de implementación de un cribado de números primos con corutinas
  • El artículo analiza mejoras para las corutinas, como el manejo de panic y la cancelación
  • A través de ejemplos, muestra cómo las corutinas pueden simplificar el código y facilitar su organización
  • El artículo analiza la implementación de corutinas en el lenguaje de programación Go
  • Las corutinas son hilos ligeros que pueden pausarse y reanudarse
  • La API de corutinas incluye funciones como New, resume, cancel y yield
  • Las corutinas pueden usarse para crear nueva concurrencia sin introducir paralelismo
  • La eficiencia de las corutinas se optimiza mediante distintas implementaciones
  • Una implementación basada en canales tarda alrededor de 190 ns por cambio
  • Una implementación basada en compilador reduce el tiempo de cambio a 118 ns por cambio
  • La implementación más eficiente usa cambios directos de corutina y tarda 20 ns por cambio
  • El artículo enfatiza la importancia de optimizar las corutinas para el rendimiento
  • Las corutinas son útiles para procesar gradualmente valores repetidos
  • La implementación de corutinas en Go ofrece una herramienta potente para los desarrolladores

1 comentarios

 
GN⁺ 2023-07-18
Comentarios en Hacker News
  • Se discuten los casos de uso de iteradores de funciones en Go y cómo escribirlos para usarlos en bucles for.
  • Algunos comentaristas expresan preocupación por la complejidad y la legibilidad de la solución propuesta.
  • Otros sostienen que las corrutinas deberían ser una característica del lenguaje y no una biblioteca.
  • Hay una discusión sobre la diferencia entre corrutinas y green threads, y sobre las ventajas y desventajas de cada una.
  • Algunos comentaristas cuestionan si las corrutinas son necesarias en Go, y dicen que las goroutines y los canales bloqueantes son suficientes.
  • El artículo también menciona la posibilidad de agregar a Go estructuras de datos comunes como Set, que podrían beneficiarse de los iteradores.
  • El punto principal del artículo es explorar si es posible implementar corrutinas de forma eficiente en Go sin introducir nuevas construcciones del lenguaje.