Junior — Middle
¿Se puede considerar segura una estructura con dos campos para su uso en condiciones multihilo?
sobes.tech AI
Respuesta de la IA
Una estructura con dos campos en Go por sí misma no es segura para el acceso concurrente. Sin sincronización adicional, el acceso a los campos de la estructura desde múltiples goroutines puede conducir a condiciones de carrera.
Si los campos de la estructura no cambian después de la inicialización (es decir, la estructura es inmutable), entonces es segura para leer desde múltiples hilos.
Si los campos pueden cambiar, entonces para garantizar la seguridad se deben usar mecanismos de sincronización, como sync.Mutex o sync.RWMutex.
Ejemplo con mutex:
import "sync"
type SafeStruct struct {
mu sync.Mutex
field1 int
field2 string
}
func (s *SafeStruct) Set(field1 int, field2 string) {
s.mu.Lock()
defer s.mu.Unlock()
s.field1 = field1
s.field2 = field2
}
func (s *SafeStruct) Get() (int, string) {
s.mu.Lock()
defer s.mu.Unlock()
return s.field1, s.field2
}
De esta manera, la estructura en sí no garantiza la seguridad, sino que debe protegerse específicamente.