Mutexes en Go
Proteger estado compartido que varias goroutines tocan.
type Counter struct {
mu sync.Mutex
counts map[string]int
}
func (c *Counter) Add(key string) {
c.mu.Lock()
defer c.mu.Unlock()
c.counts[key]++
}
func (c *Counter) Get(key string) int {
c.mu.Lock()
defer c.mu.Unlock()
return c.counts[key]
}
Cómo funciona
sync.Mutexembebido en el struct protege su mapa.Lockcondefer Unlockes el patrón seguro.- Tanto la ruta de lectura como la de escritura toman el candado.
Palabras clave y builtins usados aquí
deferfuncintmapreturnstringstructtype
El intento, en números
- Líneas
- 16
- Caracteres a escribir
- 246
- Tokens
- 86
- Ritmo de tres estrellas
- 105 tpm
Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 49 segundos.
Paso 1 de 5 en Sincronización; paso 14 de 25 en Concurrencia.