Sobes.tech
Junior

Чӣ тавр дар забони барномасозӣ (Go) пайгирӣ кардан, ки ҳама ҷараёнҳои корӣ анҷом ёфтаанд ва ҷараёни идоракунӣ метавонад натиҷаҳоро истифода барад?

sobes.tech AI

Ҷавоб аз AI

Дар Go, барои пайгирии анҷоми ҳамаи goroutine-ҳои дар ҳоли иҷро, одатан аз навъи sync.WaitGroup истифода мешавад. Ин имкон медиҳад, ки раванди асосӣ интизор шавад, то ҳама goroutine-ҳо анҷом ёбанд.

Маслиҳати истифода:

var wg sync.WaitGroup

wg.Add(3) // интизорем 3 goroutine

for i := 0; i < 3; i++ {
    go func(id int) {
        defer wg.Done() // сигнал медиҳад, ки goroutine анҷом ёфтааст
        // кори goroutine
        fmt.Println("Goroutine", id, "тамом шуд")
    }(i)
}

wg.Wait() // раванди асосӣ дар ҳоле монд, ки ҳисобкунак ба 0 мерасад
fmt.Println("Ҳама goroutine-ҳо анҷом ёфтанд, натиҷаҳо метавонанд истифода шаванд")

Ин тариқ, WaitGroup имкон медиҳад, ки иҷрои корҳо ҳамоҳанг карда шавад ва кафолат медиҳад, ки раванди назоратӣ интизор шавад, то ҳама вазифаҳои параллелӣ ба анҷом расанд.