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.