Sobes.tech
Junior — Middle

Kunnen verschillende threads tegelijkertijd met hetzelfde geheugenadres communiceren?

sobes.tech AI

Antwoord van AI

Ja, in Go kunnen verschillende goroutines (draadjes) gelijktijdig naar hetzelfde geheugenadres verwijzen. Dit kan echter leiden tot racecondities als de toegang niet gesynchroniseerd is. Voor veilige interactie met gedeeld geheugen worden synchronisatie-mechanismen gebruikt, zoals mutexen (sync.Mutex), kanalen (chan) of atomische operaties uit de sync/atomic-package.

Voorbeeld van het gebruik van een mutex om toegang tot een gedeelde variabele te beschermen:

var mu sync.Mutex
var counter int

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

Zonder deze maatregelen kan gelijktijdige toegang leiden tot onvoorspelbaar gedrag van het programma.