Sobes.tech
Senior

Goroutine nedir? Nasıl yapılandırılmıştır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go dilinde hafif yürütme akışına goroutine denir. Sistem ipliklerinden farklı olarak, goroutine'ler Go çalışma zamanı tarafından yönetilir ve çok küçük bir yığına sahiptir (birkaç kilobayt ile başlar ve dinamik olarak büyüyebilir). Bu, yüzbinlerce goroutine'nin düşük maliyetle aynı anda çalışmasına olanak tanır.

Goroutine yapısı:

  • Bir goroutine oluşturulduğunda (go operatörü ile), Go zamanlayıcısı onu yürütmeye hazır görevler kuyruğuna koyar.
  • Go çalışma zamanı M:N planlaması kullanır: M sistem ipliği (OS iplikleri) N goroutine'yi yönetir.
  • Goroutine'ler çalışma zamanı seviyesinde geçiş yapar, bu da sistem iplikleri arasındaki geçişten daha hızlıdır.
  • Her iplik (M), birden fazla goroutine (N) çalıştırabilir ve bunlar arasında blokajlar veya ihtiyaç duyulduğunda geçiş yapar.

Goroutine oluşturma örneği:

func sayHello() {
    fmt.Println("Goroutine'den merhaba")
}

func main() {
    go sayHello() // goroutine başlatılır
    time.Sleep(time.Second) // goroutine'in tamamlanması için beklenir
}