Sobes.tech
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 Mutex pour verrouiller des sections critiques, RWMutex pour diviser les verrouillages en lecture et écriture, et WaitGroup pour 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.