Sobes.tech
Junior — Middle

¿Cómo se implementa el modelo de concurrencia en el lenguaje Golang?

sobes.tech AI

Respuesta de la IA

En el lenguaje Go, el modelo de concurrencia se basa en goroutines (goroutines) y canales (channels).

  • Goroutines son hilos ligeros que se inician con la palabra clave go. Permiten ejecutar funciones en paralelo sin un gasto significativo de recursos.

  • Canales son canales tipados para intercambiar datos entre goroutines, asegurando sincronización y un intercambio seguro de información.

Ejemplo:

package main

import (
    "fmt"
    "time"
)

func worker(id int, ch chan string) {
    time.Sleep(time.Second)
    ch <- fmt.Sprintf("Trabajador %d terminado", id)
}

func main() {
    ch := make(chan string)
    for i := 1; i <= 3; i++ {
        go worker(i, ch)
    }

    for i := 1; i <= 3; i++ {
        msg := <-ch
        fmt.Println(msg)
    }
}

En este ejemplo, tres goroutines realizan tareas en paralelo y envían resultados a un canal, del cual el hilo principal los lee.

De esta forma, Go simplifica la programación concurrente, ocultando la complejidad de los hilos y la sincronización.