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