Junior — Middle
Jak zajistit bezpečné zápisy dat do kanálu z více gorutin bez použití zámku?
sobes.tech AI
Odpověď od AI
V jazyce Go je obvyklé bezpečně zapisovat data do kanálu z více gorutin bez použití zámků, protože kanály v Go jsou ve výchozím nastavení bezpečné pro vlákna.
Příklad:
ch := make(chan int)
// Zápis do kanálu z více gorutin
for i := 0; i < 5; i++ {
go func(val int) {
ch <- val // bezpečný zápis
}(i)
}
// Čtení z kanálu
for i := 0; i < 5; i++ {
fmt.Println(<-ch)
}
Pokud chcete zajistit, že zápis nebude blokován, můžete použít bufferovaný kanál. Tím se ruční zámky nestávají nutnými, protože kanál zajišťuje synchronizaci.