Sobes.tech
Middle+

Goroutine-lər necə qurulub və yığımda nə qədər yaddaş tuturlar?

sobes.tech Süni İntellekt

AI-dan cavab

Goroutine — bu yüngül icra axınıdır, Go icra mühiti (runtime) tərəfindən idarə olunur. Onlar sistem axınlarının (thread havuzu) daha az sayına çoxlanır.

Əsas komponentlər:

  • Yığın: Hər bir goroutine-in ayrılmış və genişlənə bilən yığını var. Əvvəlcə kiçikdir (Go 1.4+ ilə 16KB, əvvəlki 8KB), ehtiyac olduqda artırıla və ya azaldıla bilər.
  • Go planlayıcısı: M:N modelini həyata keçirir (M goroutine N sistem axını üzərində). O, mövcud sistem axınları arasında goroutine-lər arasında keçidi idarə edir. Keçid bloklayıcı əməliyyatlar (giriş/çıxış, kanal gözləmə) və ya açıq çağırış runtime.Gosched() ilə baş verir.
  • Kontext: İcra üçün maşın koduna göstərici, yığın göstəricisi və planlayıcı üçün digər meta məlumatları ehtiva edir.

Go 1.4-dən bəri, goroutine-in başlanğıc yığını 16KB-dir. Bu ölçü statik deyil və dinamik olaraq dəyişə bilər.