Sobes.tech
Junior — Middle

Explique el principio de funcionamiento del mecanismo de sincronización de goroutines en el contexto de la ejecución concurrente de tareas.

sobes.tech AI

Respuesta de la IA

En Go, las goroutines son hilos ligeros que se ejecutan de manera concurrente. Para sincronizar las goroutines, se utilizan mecanismos que permiten coordinar el acceso a recursos compartidos y ordenar la ejecución.

Mecanismos principales de sincronización:

  • Canales (channels): permiten transmitir datos entre goroutines, asegurando la sincronización mediante el intercambio de mensajes.
  • Mutexes (sync.Mutex): bloquean el acceso a datos compartidos para evitar condiciones de carrera.
  • WaitGroup (sync.WaitGroup): permite esperar a que un grupo de goroutines finalice.

Ejemplo con canal:

package main

import (
    "fmt"
)

func worker(ch chan int) {
    val := <-ch // espera datos del canal
    fmt.Println("Valor recibido:", val)
}

func main() {
    ch := make(chan int)
    go worker(ch)
    ch <- 42 // envía datos al canal
}

Aquí, el canal asegura la sincronización: la goroutine worker espera hasta que main envíe un valor.