Junior — Middle
Bir Go programında birkaç paralel görevin tamamlanmasını senkron beklemeyi nasıl gerçekleştirirsiniz?
sobes.tech yapay zeka
AI'dan gelen yanıt
Go dilinde, birkaç paralel görevin tamamlanmasını senkron şekilde beklemek için genellikle sync.WaitGroup kullanılır. Bu, birkaç goroutine başlatmaya ve bunların tamamlanmasını beklemeye olanak tanır.
Örnek:
package main
import (
"fmt"
"sync"
)
func worker(id int, wg *sync.WaitGroup) {
defer wg.Done() // WaitGroup'e göre görevin tamamlandığını bildirir
fmt.Printf("İşçi %d başladı\n", id)
// çalışma simülasyonu
// time.Sleep(time.Second)
fmt.Printf("İşçi %d tamamlandı\n", id)
}
func main() {
var wg sync.WaitGroup
numWorkers := 3
wg.Add(numWorkers) // Görev sayısını ayarla
for i := 1; i <= numWorkers; i++ {
go worker(i, &wg)
}
wg.Wait() // Tüm goroutine'lerin tamamlanmasını bekle
fmt.Println("Tüm işçiler tamamlandı")
}
Bu şekilde, WaitGroup paralel görevlerin yürütülmesini verimli şekilde senkronize eder.