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.