Sobes.tech
Middle+

Goroutine'ler nasıl yapılandırılmıştır ve yığın içinde ne kadar bellek kullanırlar?

sobes.tech yapay zeka

AI'dan gelen yanıt

Goroutine, Go çalışma zamanı tarafından yönetilen hafif bir yürütme akışıdır. Daha az sayıda sistem akışında (işçi havuzu) çoklanırlar.

Ana bileşenler:

  • Yığın: Her goroutine'in ayrı ve genişletilebilir bir yığını vardır. Başlangıçta küçüktür (Go 1.4+ ile 16KB, öncesinde 8KB), ihtiyaç duyuldukça artırılabilir veya azaltılabilir.
  • Go Planlayıcısı: M:N modelini uygular (M goroutine, N sistem akışı). Mevcut sistem akışları üzerinde goroutine'ler arasında geçiş yapmaktan sorumludur. Geçiş, engelleyici işlemler (giriş/çıkış, kanal bekleme) veya açıkça runtime.Gosched() çağrısı ile gerçekleşir.
  • Bağlam: Çalıştırmak için makine koduna işaretçi, yığın işaretçisi ve planlayıcı tarafından ihtiyaç duyulan diğer meta bilgileri içerir.

Go 1.4'ten itibaren bir goroutine'in başlangıç yığını 16KB'tır. Bu boyut sabit değildir ve dinamik olarak değişebilir.