typestar

Atómicos y sync.Once en Go

Contadores sin candados, e inicialización de una sola vez.

var (
    hits      atomic.Int64
    setupOnce sync.Once
)

func record() int64 {
    setupOnce.Do(func() {
        hits.Store(0)
    })
    return hits.Add(1)
}

func snapshot() int64 {
    return hits.Load()
}

Cómo funciona

  1. atomic.Int64 se actualiza con seguridad sin mutex.
  2. Add y Load son operaciones atómicas únicas.
  3. sync.Once corre su preparación exactamente una vez entre goroutines.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
15
Caracteres a escribir
179
Tokens
54
Ritmo de tres estrellas
105 tpm

Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 31 segundos.

Escribe este fragmento

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

← Anterior Siguiente →