Sobes.tech
Junior — Middle

Go'da, goroutine'ler arasında otomatik yürütme bağlamı değişimi zorunlu mu?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go dilinde, goroutine'ler arasında otomatik bağlam değişimi gerçekleşir, ancak bu, işletim sistemlerindeki klasik preemptive çoklu görev anlamında değildir.

Goroutine'ler, Go çalışma zamanı tarafından yönetilen hafif iş parçacıklarıdır. Go'nun zamanlayıcısı, sistem iş parçacıklarını verimli kullanmak için goroutine'ler arasında yürütmeyi değiştirir.

Özellikler:

  • Go zamanlayıcısı, kooperatif çoklu görev kullanır: goroutine, örneğin engelleyici işlemler veya açıkça yield yapan fonksiyonlar çağrıldığında kontrolü devretmelidir.
  • Go 1.14 sürümünden itibaren, sınırlı bir preemption desteği eklenmiş olup, zamanlayıcının uzun süre kontrolü devretmeyen goroutine'leri durdurmasına izin verir.

Bu şekilde, goroutine'ler arasındaki bağlam değişimi otomatik ve geliştirici için şeffaftır, ancak klasik işletim sistemlerinden farklı bazı özelliklere sahiptir.