Junior
Co v Go zajišťuje bezpečnost vláken (thread safety)?
sobes.tech AI
Odpověď od AI
Bezpečnost v paralelním běhu v Go je zajištěna několika mechanismy:
- Gorutiny — lehké vlákna umožňující paralelní vykonávání kódu.
- Kanály — hlavní nástroj pro bezpečnou výměnu dat mezi gorutiny bez použití sdílených proměnných.
- Balíček sync — obsahuje primitives synchronizace, jako
Mutexpro zámek kritických sekcí,RWMutexpro rozdělení zámků na čtení a zápis aWaitGrouppro čekání na dokončení skupiny gorutin.
Příklad použití mutexu k ochraně sdíleného zdroje:
import (
"sync"
)
var mu sync.Mutex
var čítač int
func zvýšit() {
mu.Lock()
defer mu.Unlock()
čítač++
}
Tímto způsobem je v Go dosaženo bezpečnosti v paralelním běhu správným využitím gorutin, kanálů a primitives synchronizace z balíčku sync.