Sobes.tech
Junior — Middle

Hoe zorg je voor veilige gegevensinvoer in een kanaal vanuit meerdere goroutines zonder gebruik van locking?

sobes.tech AI

Antwoord van AI

In Go, om veilig gegevens in een kanaal te schrijven vanuit meerdere goroutines zonder gebruik van blokkades, is het meestal voldoende om de kanaal zelf te gebruiken, omdat kanalen in Go standaard thread-safe zijn.

Voorbeeld:

ch := make(chan int)

// Schrijven naar het kanaal vanuit meerdere goroutines
for i := 0; i < 5; i++ {
    go func(val int) {
        ch <- val // veilige schrijf
    }(i)
}

// Lezen uit het kanaal
for i := 0; i < 5; i++ {
    fmt.Println(<-ch)
}

Als je wilt garanderen dat het schrijven niet blokkeert, kun je een gebufferd kanaal gebruiken. Op deze manier zijn handmatige blokkades niet nodig, omdat het kanaal synchronisatie biedt.