Sobes.tech
Middle

Kuidas toimivad aatomilised operatsioonid?

sobes.tech AI

Vastus AI-lt

Atomic operations are operations that are executed entirely or not at all, without intermediate states visible to other threads.

In Go, the sync/atomic package provides functions to perform such operations on variables (e.g., AddInt32, CompareAndSwapInt64). This allows safe modification of values in a concurrent environment without using mutexes.

Example:

import (
    "fmt"
    "sync/atomic"
)

func main() {
    var counter int32 = 0
    atomic.AddInt32(&counter, 1) // atomic increment by 1
    fmt.Println(counter) // 1
}

Atomicity guarantees that the operation will not be interrupted and other goroutines will see either the old or the new value, but not an intermediate one.