Sobes.tech
Junior — Middle

¿Qué papel desempeñan los primitivas de sincronización en el lenguaje de programación Go?

sobes.tech AI

Respuesta de la IA

Las primitivas de sincronización en Go se utilizan para gestionar el acceso a recursos compartidos y coordinar la ejecución de goroutines, para evitar condiciones de carrera y garantizar la corrección del programa.

Primitivas principales:

  • Mutex (sync.Mutex) — garantiza exclusión mutua, permitiendo que solo una goroutine ejecute la sección crítica a la vez.
  • WaitGroup (sync.WaitGroup) — permite esperar a que un grupo de goroutines termine.
  • Canal — canal para la transmisión de datos entre goroutines, que en sí mismo es una poderosa primitiva de sincronización.
  • RWMutex (sync.RWMutex) — permite que varias goroutines lean datos simultáneamente, pero la escritura bloquea a todas.

Ejemplo de uso de Mutex:

var mu sync.Mutex
var contador int

func incrementar() {
    mu.Lock()
    defer mu.Unlock()
    contador++
}

De esta forma, las primitivas de sincronización ayudan a evitar conflictos en el acceso paralelo a los datos y garantizan una interacción correcta entre las goroutines.