Sobes.tech
Junior

¿Qué en Go garantiza la seguridad de los hilos (thread safety)?

sobes.tech AI

Respuesta de la IA

La seguridad en concurrencia en Go se garantiza mediante varios mecanismos:

  • Goroutines — hilos ligeros que permiten ejecutar código en paralelo.
  • Canales — la herramienta principal para intercambiar datos de forma segura entre goroutines sin usar variables compartidas.
  • Paquete sync — contiene primitivas de sincronización, como Mutex para bloquear secciones críticas, RWMutex para dividir bloqueos en lectura y escritura, y WaitGroup para esperar a que finalice un grupo de goroutines.

Ejemplo de uso de un mutex para proteger un recurso compartido:

import (
    "sync"
)

var mu sync.Mutex
var contador int

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

De esta forma, la seguridad en concurrencia en Go se logra mediante el uso correcto de goroutines, canales y primitivas de sincronización del paquete sync.