Sobes.tech
Junior

Mi biztosítja a szálbiztonságot (thread safety) Go-ban?

sobes.tech MI

Válasz az MI-től

A párhuzamos végrehajtás biztonsága Go-ban több mechanizmus révén valósul meg:

  • Goroutine-ok — könnyű szálak, amelyek lehetővé teszik a kód párhuzamos futtatását.
  • Csatornák — a fő eszköz az adatok biztonságos cseréjéhez goroutine-ok között anélkül, hogy megosztott változókat használnánk.
  • sync csomag — szinkronizációs primitíveket tartalmaz, mint például Mutex a kritikus szakaszok zárolására, RWMutex az olvasási és írási zárolások megosztására, és WaitGroup a goroutine-ok befejezésének várására.

Példa egy mutex használatára egy közös erőforrás védelmében:

import (
    "sync"
)

var mu sync.Mutex
var szamlalo int

func növel() {
    mu.Lock()
    defer mu.Unlock()
    szamlalo++
}

Így a párhuzamos végrehajtás biztonsága Go-ban a goroutine-ok, csatornák és a sync csomag primitívjeinek helyes használatával érhető el.