Sobes.tech
Junior

Čo v Go zabezpečuje bezpečnosť vlákien (thread safety)?

sobes.tech AI

Odpoveď od AI

Bezpečnosť v súbežnom vykonávaní v Go je zabezpečená niekoľkými mechanizmami:

  • Gorutiny — ľahké vlákna, ktoré umožňujú paralelné vykonávanie kódu.
  • Kanály — hlavný nástroj na bezpečnú výmenu dát medzi gorutinami bez použitia zdieľaných premenných.
  • Balík sync — obsahuje primitives na synchronizáciu ako Mutex na zámok kritických sekcií, RWMutex na rozdelenie zámkov na čítanie a zápis a WaitGroup na čakanie na dokončenie skupiny gorútin.

Príklad použitia mutexu na ochranu zdieľaného zdroja:

import (
    "sync"
)

var mu sync.Mutex
var čítač int

func zvýšiť() {
    mu.Lock()
    defer mu.Unlock()
    čítač++
}

Týmto spôsobom je v Go dosiahnutá bezpečnosť v súbežnom vykonávaní správnym využitím gorútin, kanálov a primitives na synchronizáciu z balíka sync.