Sobes.tech
Middle

Come funzionano le operazioni atomiche?

sobes.tech AI

Risposta dell'AI

Le operazioni atomiche sono operazioni che vengono eseguite completamente o non vengono eseguite affatto, senza stati intermedi visibili ad altri thread.

In Go, il pacchetto sync/atomic fornisce funzioni per eseguire tali operazioni su variabili (ad esempio, AddInt32, CompareAndSwapInt64). Questo permette di modificare in modo sicuro i valori in ambienti concorrenti senza usare mutex.

Esempio:

import (
    "fmt"
    "sync/atomic"
)

func main() {
    var counter int32 = 0
    atomic.AddInt32(&counter, 1) // incremento atomico di 1
    fmt.Println(counter) // 1
}

L'atomicità garantisce che l'operazione non venga interrotta e che altri goroutine vedano o il valore vecchio o quello nuovo, ma non uno intermedio.