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
Mutexpara bloquear secciones críticas,RWMutexpara dividir bloqueos en lectura y escritura, yWaitGrouppara 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.