Sobes.tech
Middle+

Qual é a diferença entre Atomic e uma atribuição normal a uma variável?

sobes.tech IA

Resposta da IA

No Go, uma simples atribuição a uma variável não garante a atomicidade das operações, especialmente em ambientes multithread. Isso significa que se várias goroutines lerem e escreverem na mesma variável ao mesmo tempo, pode ocorrer uma condição de corrida (race condition).

Operações atômicas do pacote sync/atomic garantem leitura, escrita e modificação atômicas de valores sem usar mutexes. Isso significa que a operação é executada na sua totalidade e de forma indivisível, prevenindo condições de corrida.

Exemplo de incremento atômico:

import (
    "fmt"
    "sync/atomic"
)

var counter int64

func increment() {
    atomic.AddInt64(&counter, 1)
}

func main() {
    increment()
    fmt.Println(atomic.LoadInt64(&counter)) // 1
}

Assim, operações atômicas são mais eficientes que mutexes para operações simples sobre variáveis, mas não são adequadas para seções críticas complexas.