Sobes.tech
Junior

Kas Go užtikrina gijų saugumą (thread safety)?

sobes.tech AI

Atsakymas iš AI

Golang'e konkurencijos saugumas užtikrinamas keliais mechanizmais:

  • Gorutinos — lengvi srautai, leidžiantys vykdyti kodą lygiagrečiai.
  • Kanalai — pagrindinis įrankis saugiam duomenų mainui tarp gorutinų be bendrų kintamųjų.
  • sync paketas — apima sinchronizacijos primitivius, tokius kaip Mutex kritinėms sekcijoms užrakinti, RWMutex skaitymo ir rašymo blokavimui, ir WaitGroup grupės gorutinų pabaigos laukimui.

Pavyzdys — mutex naudojimas bendro ištekliaus apsaugai:

import (
    "sync"
)

var mu sync.Mutex
var counter int

func increment() {
    mu.Lock()
    defer mu.Unlock()
    counter++
}

Taip pasiekiama konkurencijos saugumas Go kalboje, teisingai naudojant gorutinas, kanalus ir sync paketo primitives.