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.