Junior — Middle
Ez a tömb biztosítja a biztonságot több szálas környezetben való használat során?
sobes.tech MI
Válasz az MI-től
Go-ban a szokásos szeletek (dinamikus méretű tömbök) alapértelmezés szerint nem szálbiztosak. Ha több goroutine olvas és ír ugyanabba a szeletbe szinkronizálás nélkül, az versenyhelyzetekhez és kiszámíthatatlan viselkedéshez vezet.
A több szálas környezetben való biztonság érdekében a következőket kell használni:
- Mutexeket (
sync.Mutex) a hozzáférés zárolására a szelet módosítása közben. - Csatornákat (
chan) az adatok átadására a goroutine-ok között. - Specializált adatszerkezeteket a
synccsomagból vagy külső könyvtárakból.
Példa mutex-szel:
var mu sync.Mutex
var slice []int
func appendSafe(val int) {
mu.Lock()
defer mu.Unlock()
slice = append(slice, val)
}
Ezek nélkül a lépések nélkül a tömb nem biztonságos párhuzamos használatra.