Junior
Дар Go, ба ҷуз каналҳо, кадом роҳҳои дигар барои ҳамоҳангсозии goroutine вуҷуд доранд؟
sobes.tech AI
Ҷавоб аз AI
Ганҷалҳои каналӣ дар Go барои ҳамоҳангсозии gorutinҳо метавонанд истифода шаванд:
- sync.WaitGroup — имкон медиҳад, ки интизор шавем, то гурӯҳи gorutinҳо ба охир расанд.
- sync.Mutex — mutex барои ҳимояи захираҳои умумӣ аз дастрасии ҳамзамон.
- sync.RWMutex — mutex бо тақсимшавӣ ба хондан ва навиштан.
- sync.Cond — тағйирёбандаи шароит барои огоҳ кардани gorutinҳо дар бораи рӯй додани ҳодиса.
- амалиётҳои атомӣ аз бастаи
sync/atomic— барои амалиётҳои атомӣ бо тағйирёбандаҳо бе баст.
Маслиҳат барои истифодаи WaitGroup:
вар wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
// кори goroutine
}()
wg.Wait() // интизор шавем, то ҳама gorutinҳо ба охир расанд