Sobes.tech
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 Mutex pro zámek kritických sekcí, RWMutex pro rozdělení zámků na čtení a zápis a WaitGroup pro č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.