Sobes.tech
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.