Sobes.tech
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ҳо ба охир расанд