Sobes.tech
Junior — Middle

Bir goroutine'de kod yürütmenin, işletim sistemi seviyesinde sistem iş parçacığı çalışmasından farkı nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go'da goroutine'ler, işletim sisteminden bağımsız olarak Go çalışma zamanı tarafından yönetilen hafif iş parçacıklarıdır. Temel farklar:

  • Hafiflik: Goroutine'ler çok az bellek kullanır (genellikle birkaç kilobyte yığın), sistem iş parçacıkları ise çok daha fazla kaynak gerektirir.
  • Planlama: Goroutine planlayıcısı, Go çalışma zamanına entegre edilmiştir ve goroutine'leri sistem iş parçacıkları arasında dağıtarak CPU'nun verimli kullanılmasını sağlar.
  • Oluşturma ve geçiş: Goroutine'ler arasındaki oluşturma ve geçiş, sistem iş parçacıkları arasındaki geçişten daha hızlıdır, çünkü çekirdek bağlam değiştirmeye gerek yoktur.

Örnek:

func main() {
    go func() {
        fmt.Println("Goroutine")
    }()
    fmt.Println("Ana iş parçacığı")
    time.Sleep(time.Second) // Goroutine'in tamamlanmasını bekle
}

Burada, goroutine süreç içinde başlatılır, ancak doğrudan ayrı bir sistem iş parçacığına karşılık gelmez.