Junior — Middle
Koju ulogu imaju primitive za sinhronizaciju u programskom jeziku Go?
sobes.tech АИ
Одговор од АИ
Primitive za sinhronizaciju u Go jeziku koriste se za upravljanje pristupom deljenim resursima i koordinaciju izvršavanja gorutina, kako bi se izbegle trke i obezbedila ispravnost programa.
Glavni primitive:
- Mutex (sync.Mutex) — obezbeđuje uzajamno isključivanje, dozvoljavajući samo jednoj gorutini da istovremeno izvršava kritičnu sekciju.
- WaitGroup (sync.WaitGroup) — omogućava čekanje na završetak grupe gorutina.
- Kanal — kanal za prenos podataka između gorutina, koji je sam po sebi moćan primitiv za sinhronizaciju.
- RWMutex (sync.RWMutex) — omogućava više gorutina da čitaju podatke istovremeno, ali pisanje blokira sve.
Primer korišćenja Mutex:
var mu sync.Mutex
var brojac int
func povecaj() {
mu.Lock()
defer mu.Unlock()
brojac++
}
Na ovaj način, primitive za sinhronizaciju pomažu da se izbegnu konflikti pri paralelnom pristupu podacima i obezbeđuju ispravnu interakciju između gorutina.