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