Sobes.tech
Junior — Middle

Go dilinde görevlerin paralel ve ardışık işlenmesi nasıl gerçekleştirilir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go dilinde görevlerin paralel işlenmesi, hafif iş parçacıkları olan goroutine'ler kullanılarak gerçekleştirilir; bunlar go anahtar kelimesiyle başlatılır. Bir goroutine, bir fonksiyonu asenkron olarak çalıştırmak için başlatılabilir ve diğer goroutine'lerle paralel olarak çalışmaya devam eder.

Senkron işlem, go kullanılmadan fonksiyonların çağrılmasıdır ve görevler sırayla gerçekleştirilir.

Paralel işlem örneği:

package main

import (
    "fmt"
    "time"
)

func görev(id int) {
    fmt.Printf("Görev %d başladı\n", id)
    time.Sleep(time.Second)
    fmt.Printf("Görev %d tamamlandı\n", id)
}

func main() {
    for i := 1; i <= 3; i++ {
        go görev(i) // goroutine başlat
    }
    time.Sleep(2 * time.Second) // goroutine'lerin tamamlanmasını bekle
}

Bu örnekte, üç görev paralel olarak başlatılır. go kaldırılırsa, görevler sıralı olarak çalışır.

Goroutine'leri senkronize etmek ve yönetmek için sıklıkla kanallar (channels) ve sync.WaitGroup kullanılır.