Sobes.tech
Junior

Kas nodrošina Go drošību pavedienu līmenī (thread safety)?

sobes.tech AI

Atbilde no AI

Golang konkurences drošība tiek nodrošināta ar vairākiem mehānismiem:

  • Gorutīnas — vieglas pavedieni, kas ļauj paralēli izpildīt kodu.
  • Kanāli — galvenais instruments drošai datu apmaiņai starp gorutīnām bez kopīgām mainīgajām.
  • sync pakotne — satur sinhronizācijas primitives, piemēram, Mutex kritisko sekciju bloķēšanai, RWMutex lasīšanas un rakstīšanas bloķēšanai un WaitGroup gaidīšanai, līdz grupa gorutīnu pabeigta.

Piemērs — mutex izmantošana kopīga resursa aizsardzībai:

import (
    "sync"
)

var mu sync.Mutex
var skaitītājs int

func palielināt() {
    mu.Lock()
    defer mu.Unlock()
    skaitītājs++
}

Tādējādi, Go konkurences drošība tiek panākta, pareizi izmantojot gorutīnas, kanālus un sync pakotnes primitives.