Sobes.tech
Junior

Šta u Go obezbeđuje sigurnost niti (thread safety)?

sobes.tech АИ

Одговор од АИ

Bezbednost u konkurentnom izvršavanju u Go je obezbeđena kroz nekoliko mehanizama:

  • Gorutine — lagani niti koje omogućavaju paralelno izvršavanje koda.
  • Kanali — glavni alat za sigurnu razmenu podataka između gorutina bez korišćenja deljenih promenljivih.
  • Paket sync — sadrži primitive za sinhronizaciju kao što su Mutex za zaključavanje kritičnih sekcija, RWMutex za deljenje zaključavanja na čitanje i pisanje i WaitGroup za čekanje završetka grupe gorutina.

Primer korišćenja mutexa za zaštitu zajedničkog resursa:

import (
    "sync"
)

var mu sync.Mutex
var brojac int

func povecaj() {
    mu.Lock()
    defer mu.Unlock()
    brojac++
}

Na ovaj način, sigurnost u konkurentnom izvršavanju u Go se postiže pravilnim korišćenjem gorutina, kanala i primitives za sinhronizaciju iz paketa sync.