Sobes.tech
Junior — Middle

Go dilinde tam anlamıyla paralel görev işleme gerçekleştirilebilir mi?

sobes.tech yapay zeka

AI'dan gelen yanıt

Evet, Go dilinde tam anlamıyla paralel görev işleme gerçekleştirilebilir. Go, goroutine'ler aracılığıyla yerleşik eşzamanlılık desteği sağlar; bunlar, Go çalışma zamanı tarafından yönetilen hafif iş parçacıklarıdır.

Goroutine'ler, fonksiyonların paralel olarak çalışmasına izin verirken, kanallar (channels) bunlar arasında güvenli veri alışverişini sağlar.

Paralel işlem örneği:

package main

import (
    "fmt"
    "time"
)

func worker(id int, jobs <-chan int, results chan<- int) {
    for j := range jobs {
        fmt.Printf("İşçi %d görev %d üzerinde çalışıyor\n", id, j)
        time.Sleep(time.Second) // çalışma simülasyonu
        results <- j * 2
    }
}

func main() {
    jobs := make(chan int, 5)
    results := make(chan int, 5)

    for w := 1; w <= 3; w++ {
        go worker(w, jobs, results)
    }

    for j := 1; j <= 5; j++ {
        jobs <- j
    }
    close(jobs)

    for a := 1; a <= 5; a++ {
        fmt.Println("Sonuç:", <-results)
    }
}

Bu şekilde, Go minimum çaba ile verimli bir şekilde paralel işlem gerçekleştirmeyi sağlar.