Middle
Kaip veikia atominės operacijos?
sobes.tech AI
Atsakymas iš AI
Atominės operacijos yra operacijos, kurios arba vykdomos visiškai, arba visai nevykdomos, be tarpinių būsenų, matomų kitiems srautams.
Go paketas sync/atomic teikia funkcijas tokioms operacijoms atlikti su kintamaisiais (pavyzdžiui, AddInt32, CompareAndSwapInt64). Tai leidžia saugiai keisti reikšmes konkurencinėje aplinkoje be mutexų.
Pavyzdys:
import (
"fmt"
"sync/atomic"
)
func main() {
var counter int32 = 0
atomic.AddInt32(&counter, 1) // atominis padidinimas 1
fmt.Println(counter) // 1
}
Atomika užtikrina, kad operacija nebus nutraukta, ir kiti srautai matys arba seną, arba naują reikšmę, bet ne tarpinę.