Junior — Middle
Biedt deze array veiligheid bij gebruik in een multithread-omgeving?
sobes.tech AI
Antwoord van AI
In Go zijn gewone slices (arrays met dynamische grootte) standaard niet thread-safe. Als meerdere goroutines tegelijkertijd lezen en schrijven in hetzelfde slice zonder synchronisatie, leidt dit tot race conditions en onvoorspelbaar gedrag.
Om veiligheid te garanderen in een multithread-omgeving, moet je gebruiken:
- Mutexen (
sync.Mutex) om toegang te blokkeren tijdens het wijzigen van het slice. - Kanalen (
chan) voor gegevensoverdracht tussen goroutines. - Gespecialiseerde datastructuren uit de
sync-package of externe bibliotheken.
Voorbeeld met mutex:
var mu sync.Mutex
var slice []int
func appendSafe(val int) {
mu.Lock()
defer mu.Unlock()
slice = append(slice, val)
}
Zonder deze maatregelen is de array niet veilig voor parallel gebruik.