Elecciones 2026Vea quién creemos que merece su voto, según nuestros criteriosLa guía →
ESCRITO EN ESPAÑOL CLARO.
CLAY TRIBUNE.
Publicidad

Go Concurrency Distilled hace que las Goroutines y los Canales sean interactivos con ejemplos de código. )

Una mirada rápida a Go Concurrency Distilled, un mini-libro de ejemplos interactivos que abarca goroutines, canales y más. )

Por mitch·5 min de lectura
An illustration showing interconnected gears and glowing threads representing concurrent processes.

Go Concurrency Distilled es un nuevo mini-libro que transforma los primitivos de concurrencia de Go en un conjunto de ejemplos interactivos que puede modificar y ejecutar directamente en la página. El libro cubre goroutines, canales, select, grupos de espera, mutexes, semáforos y más, cada uno con fragmentos de código en vivo que puede editar y ejecutar. También existe una versión en PDF con ejemplos estáticos para imprimir o leer sin conexión.

El libro se describe como una actualización rápida, no una guía para principiantes. Para una inmersión más profunda, el autor dirige a los lectores a Gist of Go: Concurrencia, un libro separado con ejercicios prácticos. Todo el proyecto está libre de IA, lo que el autor señala explícitamente.

Goroutines y Grupos de Espera

Goroutines are the building blocks of Go concurrency. You start one with the go keyword, and the Go runtime juggles them across operating system threads running on CPU cores. Goroutines are lighter than OS threads, so you can create hundreds or thousands of them without much overhead.

Publicidad

In the example above, two goroutines print «worker 1» and «worker 2» after being launched. A wait group (sync.WaitGroup) tracks their completion. The Add method sets the counter, Done decrements it, and Wait blocks until the counter reaches zero. That keeps the main function from exiting until both workers are finished.

There’s also a WaitGroup.Go method that combines the setup. It increments the counter, runs the function in a goroutine, and decrements the counter when the function ends.

Canales y Direcciones de Canal

Los canales permiten que las goroutines pasen valores entre sí. Un canal es una ventana donde una goroutine lanza un valor y otra lo recibe. Enviar un valor a través de un canal es sincrónico: la goroutine que envía se bloquea hasta que la goroutine que recibe toma el valor.

The book shows a simple example where a goroutine sends «ping» to a channel, and the main function reads it back. The sender blocks on ch <- val, and the receiver blocks on <-ch. Only when the value is received does the sending goroutine continue.

Cuando un canal ya no es necesario, el recolector de basura de Go libera automáticamente sus recursos, ya esté cerrado o no. Cerrar un canal indica a los lectores que se ha enviado todo el dato. El lector verifica el estado del canal con un segundo valor, llamado estado «coma OK».

Así es como el lector verifica:

go
num, ok := <-in
if !ok {
break
}

If ok is false, the channel is closed and the loop stops. If ok is true, the reader gets the next value.

Canales Direccionales y Canales con Buffer

Channels can be bidirectional, send-only, or receive-only. Bidirectional channels are the default. Send-only channels can be declared with chan<- int, and receive-only channels are declared with <-chan int.

No se puede leer de un canal solo de envío ni escribir en un canal solo de recepción, y no se puede cerrar un canal solo de recepción. Establecer la dirección protege contra errores accidentales.

Los canales con buffer actúan como una cola FIFO con un búfer de tamaño fijo. Escribir en un canal con buffer no se bloquea siempre que haya espacio en el búfer, y leer no se bloquea siempre que el búfer contenga valores.

The cap and len functions work on buffered channels. cap shows the buffer size, and len shows how many values are currently stored.

Reading from a closed buffered channel works the same way as a regular channel. It returns values from the buffer until the buffer is empty, then returns a zero value with ok set to false.

Lo que Ofrece Este Libro

El formato interactivo es el atractivo. En lugar de leer sobre concurrencia, puede cambiar el código y ver los resultados de inmediato. Eso importa para un tema donde el tiempo y el orden de los eventos a menudo son difíciles de comprender solo a partir de texto.

El libro también es notable por la ausencia de participación de la IA. En un campo donde las herramientas automatizadas están en todas partes, esta es una elección deliberada del autor, y vale la pena señalarla junto con el contenido técnico.

Tema Detalle Clave
Gorrutinas Started with the go keyword; tracked by sync.WaitGroup
Canales Values passed synchronously; closed with close(ch)
Canales con búfer FIFO queue with fixed buffer size; use cap and len
Canales direccionales chan<- for send-only, <-chan for receive-only

El libro es una lectura rápida para cualquiera que ya conozca Go pero desee afinar su comprensión de la concurrencia. No es un sustituto del completo Gist de Go: Concurrencia, al que el autor dirige a los principiantes, pero es un complemento útil para el desarrollador experimentado que busca un repaso rápido.

Los ejemplos interactivos son la joya de la corona. Modificar la lógica de una gorrutina y ver cómo cambia la salida en segundos es más rápido que leer un muro de prosa.

El libro es una adición bienvenida al ecosistema de Go. Hace que un tema complejo sea accesible a través de ejemplos pequeños y ejecutables, y lo hace sin depender de la automatización. Esa combinación —interacción práctica y diseño cuidadoso— es lo suficientemente rara como para justificar una mirada.

Material de origen: &ldquo;Go Concurrency Distilled,&rdquo; antonz.org.

El Cuaderno

Recibe El Cuaderno.

Las mejores historias del día y cada veredicto nuevo, en español claro, en tu correo a las siete. Un correo al día, nada más.

Enviamos una nota para confirmar. Cada número trae un enlace para darte de baja con un clic.

Publicidad

Deja una respuesta

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

Como Afiliado de Amazon, Clay Tribune obtiene ingresos por las compras adscritas que cumplen los requisitos aplicables.