Sobes.tech
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 Mutex pentru blocarea secțiunilor critice, RWMutex pentru împărțirea blocărilor în citire și scriere, și WaitGroup pentru 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.