Sobes.tech
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.