Junior — Middle
Goroutine kullanırken otomatik yürütme geçişi hangi durumlarda gerçekleşir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Go'da, goroutine'ler arasında otomatik yürütme geçişi aşağıdaki durumlarda gerçekleşir:
- Bir goroutine, bloklayan bir fonksiyon çağırdığında, örneğin, bir kanaldan okuma, bir kanala yazma veya bloğu yapan sistem çağrısı.
- runtime.Gosched() fonksiyonunu çağırdığında, bu fonksiyon açıkça planlayıcıya kontrolü devreder ve başka bir goroutine'a geçiş sağlar.
- Bir goroutine sona erdiğinde, planlayıcı başka bir hazır goroutine'a geçer.
Go çalışma zamanı, goroutine'lerin yürütülmesini mevcut sistem thread'leri (M) üzerinde dağıtan bir planlayıcı içerir. Geçiş otomatik olarak gerçekleşir, böylece CPU etkin bir şekilde kullanılır ve giriş/çıkış veya senkronizasyon işlemleri beklenirken tüm programın yürütülmesi engellenmez.