Sobes.tech
Junior

Ποιοι άλλοι τρόποι συγχρονισμού των goroutines υπάρχουν στο Go εκτός από τις κανάλες;

sobes.tech AI

Απάντηση από AI

Además de los canales, en Go, para sincronizar las goroutines, se pueden usar:

  • sync.WaitGroup — permite esperar a que un grupo de goroutines termine.
  • sync.Mutex — mutex para proteger recursos compartidos contra accesos simultáneos.
  • sync.RWMutex — mutex con separación entre lectura y escritura.
  • sync.Cond — variable condicional para notificar a las goroutines sobre la ocurrencia de un evento.
  • Operaciones atómicas del paquete sync/atomic — para operaciones atómicas con variables sin bloqueos.

Ejemplo de uso de WaitGroup:

var wg sync.WaitGroup
wg.Add(1)
go func() {
    defer wg.Done()
    // trabajo de la goroutine
}()
wg.Wait() // esperamos a que todas las goroutines terminen