Junior
Millised teised goroutine'i sünkroniseerimise viisid Go-s on kanalite kõrval?
sobes.tech AI
Vastus AI-lt
Lisaks kanalitele, Go keeles gorutinide sünteesimiseks saab kasutada:
- sync.WaitGroup — võimaldab oodata, kuni gorutinide grupp lõpetab.
- sync.Mutex — lukustus, et kaitsta jagatud ressursse samaaegse juurdepääsu eest.
- sync.RWMutex — lukustus, mis jaguneb lugemis- ja kirjutamisosaks.
- sync.Cond — tingimusmuutuja, et teavitada gorutineid sündmuse toimumisest.
- atomaarseid operatsioone
sync/atomicpaketist — atomaarsete operatsioonide tegemiseks muutujatega ilma lukudeta.
Näide WaitGroup kasutamisest:
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
// gorutine töö
}()
wg.Wait() // ootame, kuni kõik gorutined lõpetavad