typestar

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

  1. atomic.Int64 tiene Add, Load, Store y CompareAndSwap.
  2. atomic.Value guarda cualquier valor único de forma atómica.
  3. Los atómicos sirven para contadores y banderas, no para invariantes de varios campos.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 5 de 5 en Sincronización; paso 18 de 25 en Concurrencia.

← Anterior Siguiente →