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 имкон медиҳад, ки иҷрои корҳо ҳамоҳанг карда шавад ва кафолат медиҳад, ки раванди назоратӣ интизор шавад, то ҳама вазифаҳои параллелӣ ба анҷом расанд.