Todo lo anterior era el calentamiento. La concurrencia en Go es el motivo por el que el lenguaje existe y por el que probablemente estás leyendo esta serie. Y empieza con dos letras: go. Una goroutine es una función que vuela sola Pon go delante de cualquier llamada y esa función se ejecuta de forma […]
LEER MÁS
En el artículo anterior las goroutines volaban cada una a lo suyo y las esperábamos con time.Sleep, que es como sincronizar relojes gritando por la ventana. Hoy llega la herramienta de verdad: los channels en Go, las tuberías tipadas por las que las goroutines se pasan datos y, de regalo, se sincronizan. Channels: enviar, recibir, […]
LEER MÁS
Ya tienes goroutines y channels. Hoy los combinamos en los tres patrones de concurrencia que resuelven el 90% de los problemas concurrentes reales. Son los mismos planos que usa la industria, documentados en el blog oficial de Go y en la charla clásica de Rob Pike Go Concurrency Patterns. Pipeline: la cadena de montaje Un […]
LEER MÁS
Los channels son la vía preferida, pero no la única. Hoy completamos la caja de herramientas con el paquete sync para sincronización clásica y con context, el mecanismo estándar para decirle a un ejército de goroutines que se acabó lo que se daba. Dominar el context en Go es media producción. sync.WaitGroup: esperar sin dormir […]
LEER MÁS