Sobes.tech
Junior — Middle

¿Qué construcciones principales se utilizan para gestionar y ejecutar goroutines en el lenguaje de programación?

sobes.tech AI

Respuesta de la IA

Para gestionar y ejecutar goroutines en Go, se utilizan las siguientes construcciones principales:

  • Inicio de una goroutine: la palabra clave go antes de llamar a una función la ejecuta en una goroutine separada, por ejemplo:

    go myFunction()
    

    Esto permite ejecutar la función de forma asíncrona.

  • Canales (channels): se utilizan para sincronizar y intercambiar datos entre goroutines. Un canal se crea así:

    ch := make(chan int)
    

    Enviar y recibir datos:

    ch <- 42      // envío
    val := <-ch   // recepción
    

    Los canales garantizan una comunicación segura y bloquean la goroutine si los datos no están listos.

  • sync.WaitGroup: se usa para esperar a que finalice un grupo de goroutines. Ejemplo:

    var wg sync.WaitGroup
    wg.Add(1)
    go func() {
        defer wg.Done()
        // trabajo de la goroutine
    }()
    wg.Wait() // esperamos a que terminen todas las goroutines
    
  • select: permite esperar varias operaciones en canales simultáneamente, eligiendo la lista lista para ejecutar. Ejemplo:

    select {
    case msg := <-ch1:
        fmt.Println("Recibido de ch1:", msg)
    case ch2 <- 42:
        fmt.Println("Enviado a ch2")
    default:
        fmt.Println("Ninguna operación está lista")
    }
    

Estas construcciones permiten lanzar, sincronizar y gestionar la ejecución paralela en Go.