Junior — Middle
Ce rol joacă primitivele de sincronizare în limbajul de programare Go?
sobes.tech AI
Răspuns de la AI
Primitivele de sincronizare din Go sunt utilizate pentru a gestiona accesul la resursele partajate și pentru a coordona executarea goroutine-urilor, pentru a evita condițiile de cursă și pentru a asigura corectitudinea programului.
Primitivele principale:
- Mutex (sync.Mutex) — asigură excluderea mutuală, permițând doar unei goroutine să execute secțiunea critică simultan.
- WaitGroup (sync.WaitGroup) — permite așteptarea finalizării unui grup de goroutine-uri.
- Canal — canal pentru transmiterea datelor între goroutine-uri, care este în sine o primitive puternică de sincronizare.
- RWMutex (sync.RWMutex) — permite mai multor goroutine-uri să citească datele în același timp, dar scrierea blochează pe toți.
Exemplu de utilizare a Mutex:
var mu sync.Mutex
var contor int
func increment() {
mu.Lock()
defer mu.Unlock()
contor++
}
Astfel, primitivele de sincronizare ajută la evitarea conflictelor în accesul paralel la date și asigură o interacțiune corectă între goroutine-uri.