Sobes.tech
Junior

Kādi citi gorutīnu sinhronizācijas veidi pastāv Go valodā, izņemot kanālus?

sobes.tech AI

Atbilde no AI

Papildus kanāliem, Go valodā gorutīnu sinhronizācijai var izmantot:

  • sync.WaitGroup — ļauj gaidīt, līdz grupa gorutīnu pabeigs darbu.
  • sync.Mutex — mutex, lai aizsargātu koplietotos resursus no vienlaicīgas piekļuves.
  • sync.RWMutex — mutex ar sadalījumu lasīšanai un rakstīšanai.
  • sync.Cond — nosacījuma mainīgais, lai paziņotu gorutīnām par notikumu.
  • atomiskas operācijas no sync/atomic pakotnes — atomiskas operācijas ar mainīgajiem bez bloķēšanas.

Piemērs, kā izmantot WaitGroup:

var wg sync.WaitGroup
wg.Add(1)
go func() {
    defer wg.Done()
    // gorutīnas darbs
}()
wg.Wait() // gaidām, līdz visas gorutīnas pabeigs darbu