Middle
Hogyan működnek az atom műveletek?
sobes.tech MI
Válasz az MI-től
Az atomikus műveletek olyan műveletek, amelyek vagy teljes egészében végrehajtódnak, vagy egyáltalán nem, más szálak számára nem látható közbenső állapotok nélkül.
Go-ban a sync/atomic csomag olyan függvényeket kínál, amelyek ilyen műveleteket hajtanak végre változókon (például AddInt32, CompareAndSwapInt64). Ez lehetővé teszi értékek biztonságos módosítását versenyhelyzetben mutexek használata nélkül.
Példa:
import (
"fmt"
"sync/atomic"
)
func main() {
var counter int32 = 0
atomic.AddInt32(&counter, 1) // atomikus növelés 1-gyel
fmt.Println(counter) // 1
}
Az atomitás garantálja, hogy a művelet nem lesz megszakítva, és más goroutine-ok vagy a régi, vagy az új értéket fogják látni, de nem egy közbenső értéket.