Tipos atómicos en Go
Los atómicos tipados llevan su propia memoria, así que el mutex sobra.
type Stats struct {
requests atomic.Int64
failures atomic.Int64
stopped atomic.Bool
}
func (s *Stats) Record(ok bool) {
s.requests.Add(1)
if !ok {
s.failures.Add(1)
}
}
func (s *Stats) Report() string {
return fmt.Sprintf("%d/%d failed, stopped=%t",
s.failures.Load(), s.requests.Load(), s.stopped.Load())
}
Cómo funciona
atomic.Int64tiene Add, Load, Store y CompareAndSwap.atomic.Valueguarda cualquier valor único de forma atómica.- Los atómicos sirven para contadores y banderas, no para invariantes de varios campos.
Palabras clave y builtins usados aquí
boolfuncifreturnstringstructtype
El intento, en números
- Líneas
- 17
- Caracteres a escribir
- 310
- Tokens
- 94
- Ritmo de tres estrellas
- 105 tpm
Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 54 segundos.
Paso 5 de 5 en Sincronización; paso 18 de 25 en Concurrencia.