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.