Junior
Qu'est-ce qui garantit la sécurité des threads (thread safety) en Go?
sobes.tech IA
Réponse de l'IA
La sécurité des threads en Go est assurée par plusieurs mécanismes:
- Goroutines — des threads légers permettant d'exécuter du code en parallèle.
- Canaux — l'outil principal pour échanger des données en toute sécurité entre goroutines sans utiliser de variables partagées.
- Package sync — contient des primitives de synchronisation telles que
Mutexpour verrouiller des sections critiques,RWMutexpour diviser les verrouillages en lecture et écriture, etWaitGrouppour attendre la fin d'un groupe de goroutines.
Exemple d'utilisation d'un mutex pour protéger une ressource partagée:
import (
"sync"
)
var mu sync.Mutex
var compteur int
func incrementer() {
mu.Lock()
defer mu.Unlock()
compteur++
}
Ainsi, la sécurité des threads en Go est atteinte grâce à une utilisation correcte des goroutines, des canaux et des primitives de synchronisation du package sync.