Saltar al contenido
Logotipo de Trainontech Trainontech

Lenguajes y Fundamentos de Programación · LNG-171

Go avanzado: concurrencia con goroutines y canales

Goroutines, canales y el modelo de concurrencia que hace de Go el lenguaje de la infraestructura moderna.

Bajo demanda Avanzado 8 módulos · 39 clases

Formato asíncrono Desarrollo Go

Lo que aprenderás

  • Lanzar goroutines y coordinar su final con WaitGroup sin dejar tareas huérfanas.
  • Comunicar procesos con canales con y sin búfer, y cerrar el canal en el lado correcto.
  • Multiplexar operaciones con select y aplicar tiempos de espera y cancelación.
  • Propagar cancelación y plazos con context a través de toda la cadena de llamadas.
  • Detectar carreras de datos ejecutando las pruebas con el detector de carreras de Go.
  • Construir patrones de tubería, abanico de salida y agrupación de trabajadores con límite de concurrencia.

Contenido del curso

8 módulos · 39 clases en vídeo · práctica guiada en cada módulo

Módulo 1 · Presentación y punto de partida 4 clases
  • Concurrencia y paralelismo: la distinción que importa
  • El planificador de Go en cuatro trazos
  • Preparar el proyecto y ejecutar con el detector de carreras
  • Programas de ejemplo que fallan a propósito
Módulo 2 · Goroutines y sincronización 5 clases
  • Lanzar goroutines y ciclo de vida
  • WaitGroup para esperar el final
  • Mutex y RWMutex
  • Paquete atomic y contadores
  • Goroutines que nunca terminan: cómo se detectan
Módulo 3 · Canales 5 clases
  • Canales sin búfer y sincronización implícita
  • Canales con búfer y contrapresión
  • Dirección de canal en las firmas
  • Cerrar un canal y quién debe hacerlo
  • Recorrer un canal con range
Módulo 4 · select y control del tiempo 5 clases
  • Multiplexar con select
  • Tiempos de espera con time.After
  • Casos por defecto y espera activa
  • Temporizadores y tickers
  • Reintentos con retroceso
Módulo 5 · Context y cancelación 5 clases
  • Qué resuelve context
  • WithCancel, WithTimeout y WithDeadline
  • Propagar el contexto por toda la cadena
  • Valores en el contexto: uso y abuso
  • Cierre ordenado de un servicio
Módulo 6 · Patrones de concurrencia 5 clases
  • Tubería de etapas conectadas por canales
  • Abanico de salida y abanico de entrada
  • Agrupación de trabajadores con límite
  • Semáforo con canal con búfer
  • Cancelación de una tubería completa
Módulo 7 · Errores, pruebas y diagnóstico 5 clases
  • Recoger errores de varias goroutines
  • errgroup y su uso idiomático
  • Pruebas de código concurrente sin dependencia del tiempo
  • Perfilado con pprof y trazas de ejecución
  • Interbloqueos: lectura del volcado
Módulo 8 · Caso práctico: recolector concurrente de datos 5 clases
  • Diseño de la tubería y de sus etapas
  • Descarga concurrente con límite y tiempos de espera
  • Agregación de resultados y de errores
  • Cierre ordenado ante una señal del sistema
  • Entrega: servicio con pruebas y perfilado

Requisitos

  • Go a nivel intermedio: structs, interfaces, errores como valores, módulos y pruebas.
  • Go instalado en el equipo y soltura con go test y go build.
  • Conocimientos básicos de redes y de peticiones HTTP para los ejercicios.

Descripción

Lanzar una goroutine cuesta una palabra clave, y ahí empieza el problema: es fácil arrancar miles de tareas, perder la referencia de cuándo terminan, escribir sobre el mismo mapa desde dos sitios y descubrirlo semanas después en producción con un bloqueo intermitente que no se reproduce en el portátil de nadie.

Este curso trata la concurrencia en Go como un problema de diseño, no de sintaxis. Se parte de programas que fallan de forma reproducible y se corrigen con las herramientas del lenguaje: canales, select, context, primitivas de sincronización y el detector de carreras. Se construyen los patrones habituales, tuberías, trabajadores y abanico de entrada y salida, midiendo el efecto de cada límite de concurrencia.

Al terminar se puede diseñar un servicio que atienda mucha carga con un consumo previsible y detener ordenadamente todo lo que tenga en marcha. Es la base para trabajar en servicios de red, sistemas de ingesta de datos y herramientas de infraestructura, donde la concurrencia no es un extra sino el motivo por el que se eligió Go.

¿Para quién es este curso?

  • Desarrolladores Go que mantienen servicios con carga alta y bloqueos difíciles de reproducir.
  • Ingeniería de plataforma que construye herramientas de ingesta y procesamiento de datos.
  • Backend developers que diseñan APIs con requisitos de latencia y cierre ordenado.
Bajo demanda

Curso diseñado con la ficha cerrada. Se produce al confirmarse un grupo o un contrato.

Código
LNG-171
Nivel
Avanzado
Público
Desarrollo
Entorno
Go

Este curso incluye

  • 39 clases en vídeo bajo demanda
  • Práctica en entornos web y simuladores, sin instalar nada
  • Tutorización en el campus
  • Acceso desde móvil, tableta y ordenador
  • Actualizaciones cuando cambia la versión de la herramienta
  • Certificado de finalización

Sigue aprendiendo

Cursos relacionados

PY-106Lenguajes y Fundamentos de Programación

Concurrencia: multihilo y multiproceso

Paralelizar adquisición de datos y tareas de E/S sin introducir errores difíciles de reproducir.

Python

Avanzado 33 clases

PY-107Lenguajes y Fundamentos de Programación

Testing y TDD en Python

Pruebas unitarias, fixtures y desarrollo dirigido por pruebas en proyectos técnicos reales.

Python

Avanzado 34 clases

PY-131Lenguajes y Fundamentos de Programación

Webscraping con agentes de IA en local

Agentes que navegan y extraen datos sin depender de servicios en la nube.

PythonOllama

Avanzado 34 clases