Junior — Middle
Czy możesz wyjaśnić zasadę działania operacji atomowych w programowaniu?
sobes.tech AI
Odpowiedź od AI
Operacje atomowe to operacje, które są wykonywane w całości lub wcale, bez możliwości przerwania ich przez inne wątki. W kontekście programowania wielowątkowego jest to ważne, aby zapobiec warunkom wyścigu.
W Go do operacji atomowych używa się pakietu sync/atomic. Zapewnia on funkcje do bezpiecznej modyfikacji zmiennych typów prostych (np. int32, int64, uint32, uint64, uintptr), gwarantując, że operacje odczytu, zapisu i modyfikacji będą wykonywane atomowo.
Przykład:
import (
"fmt"
"sync/atomic"
)
func main() {
var counter int64 = 0
atomic.AddInt64(&counter, 1) // atomowo zwiększa licznik
fmt.Println(atomic.LoadInt64(&counter)) // atomowo odczytuje wartość
}
W ten sposób operacje atomowe pozwalają uniknąć użycia ciężkich blokad (mutex) dla prostych operacji, zwiększając wydajność i bezpieczeństwo w programach współbieżnych.