Sobes.tech
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.