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.