Goroutine nedir? Sistem iş parçacığından nasıl farklıdır? Go planlayıcısı (GMP) hakkında bilgi ver.
sobes.tech yapay zeka
AI'dan gelen yanıt
Goroutine, Go dilinde hafif bir yürütme akışıdır ve Go çalışma zamanı tarafından yönetilir, işletim sistemi tarafından değil. Sistem thread'lerinden farklı olarak, goroutine'lerin yığın boyutu çok daha küçüktür (birkaç kilobayt ile başlar ve dinamik olarak büyüyebilir), bu da binlerce hatta milyonlarca goroutine'nin düşük maliyetle aynı anda çalışmasına olanak tanır.
Sistem thread'leri işletim sistemi tarafından oluşturulur ve planlanır, sabit büyük bir yığınlara sahiptir ve daha pahalı bağlam değiştirme işlemleri içerir.
Go'nun planlayıcısı GMP modeline dayanır:
- G (goroutine) — kendisi, yürütme birimi.
- M (makine) — goroutine'lerin çalıştığı sistem thread'i (İşletim Sistemi thread'i).
- P (işlemci) — mantıksal işlemci, M üzerinde bir goroutine çalıştırmak için gereken kaynak.
P, yürütüme hazır goroutine'lerin (G) kuyruğunu yönetir. M, aynı anda sadece bir goroutine çalıştırabilir, ancak çok sayıda M ve P'nin varlığı sayesinde planlayıcı, goroutine'leri sistem thread'leri arasında verimli bir şekilde dağıtarak eşzamanlılık ve paralelliği sağlar.
Bu yaklaşım, Go'nun sistem kaynaklarını verimli kullanmasını ve çok işlemcili sistemlerde ölçeklenmesini sağlar.