Junior
Ce asigură siguranța firelor (thread safety) în Go?
sobes.tech AI
Răspuns de la AI
Securitatea în concurență în Go este asigurată prin mai multe mecanisme:
- Goroutines — fire ușoare care permit executarea codului în paralel.
- Canale — principalul instrument pentru schimbul sigur de date între goroutines fără utilizarea variabilelor comune.
- Pachetul sync — conține primitive de sincronizare, cum ar fi
Mutexpentru blocarea secțiunilor critice,RWMutexpentru împărțirea blocărilor în citire și scriere, șiWaitGrouppentru a aștepta finalizarea unui grup de goroutines.
Exemplu de utilizare a unui mutex pentru protejarea unei resurse comune:
import (
"sync"
)
var mu sync.Mutex
var contor int
func increment() {
mu.Lock()
defer mu.Unlock()
contor++
}
Astfel, securitatea în concurență în Go se realizează prin utilizarea corectă a goroutines, canalelor și primitivele de sincronizare din pachetul sync.