Sobes.tech
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.