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
Mutexza zaključavanje kritičnih sekcija,RWMutexza deljenje zaključavanja na čitanje i pisanje iWaitGroupza č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.