Sobes.tech
Junior

Milyen más szinkronizációs módszerek léteznek a goroutine-ok számára Go-ban a csatornákon kívül?

sobes.tech MI

Válasz az MI-től

A csatornákon kívül Go-ban a goroutine-ok szinkronizálására a következőket lehet használni:

  • sync.WaitGroup — lehetővé teszi egy goroutine-csoport befejezésének várását.
  • sync.Mutex — mutex a közös erőforrások védelmére az egyidejű hozzáférés ellen.
  • sync.RWMutex — mutex az olvasás és írás elkülönítésére.
  • sync.Cond — feltételes változó az esemény bekövetkezéséről szóló értesítéshez goroutine-oknak.
  • sync/atomic csomagból származó atomikus műveletek — változókkal végzett atomikus műveletek zárolások nélkül.

WaitGroup használatának példája:

var wg sync.WaitGroup
wg.Add(1)
go func() {
    defer wg.Done()
    // goroutine munkája
}()
wg.Wait() // várjuk, hogy minden goroutine befejeződjön