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.