Sobes.tech
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 operacijassync/atomic paketo — 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ą