Junior
Kokie kiti būdai egzistuoja Go programoje gorutinos sinchronizacijai be kanalų?
sobes.tech AI
Atsakymas iš AI
Be kanalų, Go kalboje, sinchronizuojant gorutinas, galima naudoti:
- sync.WaitGroup — leidžia laukti, kol baigsis gorutinų grupė.
- sync.Mutex — mutex, skirtas apsaugoti bendrus išteklius nuo vienalaikio prieigos.
- sync.RWMutex — mutex su skirstymu į skaitymą ir rašymą.
- sync.Cond — sąlyginė kintamoji, skirta pranešti gorutinoms apie įvykį.
- atomines operacijas iš
sync/atomicpaketo — atomines operacijas su kintamaisiais be užraktų.
Pavyzdys, kaip naudoti WaitGroup:
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
// gorutinos darbas
}()
wg.Wait() // laukiame, kol visos gorutinos baigs darbą