Senior
Goroutine nedir? Nasıl yapılandırılmıştır?
sobes.tech yapay zeka
AI'dan gelen yanıt
Go dilinde hafif yürütme akışına goroutine denir. Sistem ipliklerinden farklı olarak, goroutine'ler Go çalışma zamanı tarafından yönetilir ve çok küçük bir yığına sahiptir (birkaç kilobayt ile başlar ve dinamik olarak büyüyebilir). Bu, yüzbinlerce goroutine'nin düşük maliyetle aynı anda çalışmasına olanak tanır.
Goroutine yapısı:
- Bir goroutine oluşturulduğunda (
gooperatörü ile), Go zamanlayıcısı onu yürütmeye hazır görevler kuyruğuna koyar. - Go çalışma zamanı M:N planlaması kullanır: M sistem ipliği (OS iplikleri) N goroutine'yi yönetir.
- Goroutine'ler çalışma zamanı seviyesinde geçiş yapar, bu da sistem iplikleri arasındaki geçişten daha hızlıdır.
- Her iplik (M), birden fazla goroutine (N) çalıştırabilir ve bunlar arasında blokajlar veya ihtiyaç duyulduğunda geçiş yapar.
Goroutine oluşturma örneği:
func sayHello() {
fmt.Println("Goroutine'den merhaba")
}
func main() {
go sayHello() // goroutine başlatılır
time.Sleep(time.Second) // goroutine'in tamamlanması için beklenir
}