Junior — Middle
¿Ha utilizado algún mecanismo de sincronización con sync.Cond en sus proyectos?
sobes.tech AI
Respuesta de la IA
En proyectos en Go, he utilizado sync.Cond para organizar la espera y notificación entre goroutines, cuando era necesario implementar sincronización condicional. Por ejemplo, cuando una goroutine debe esperar a que otra realice una acción específica o cambie su estado.
Ejemplo de uso de sync.Cond:
package main
import (
"fmt"
"sync"
"time"
)
func main() {
mu := sync.Mutex{}
cond := sync.NewCond(&mu)
ready := false
go func() {
time.Sleep(time.Second)
mu.Lock()
ready = true
cond.Signal() // notificamos a la goroutine en espera
mu.Unlock()
}()
mu.Lock()
for !ready {
cond.Wait() // esperamos la señal
}
fmt.Println("Goroutine lista")
mu.Unlock()
}
Este enfoque es útil cuando se necesita controlar de manera más fina el estado y la sincronización que simplemente usar canales.