Goroutine nedir?
- Go kursu
- Orta seviye
- Ders 1/80
- 4 dk
Goroutine'in hafif bir iş parçacığı olduğunu öğrenirsin.
Goroutine nedir?
Bir goroutine, Go çalışma zamanının yönettiği hafif bir iş parçacığıdır (lightweight thread). Bir fonksiyonun başına go anahtar kelimesini koyarak başlatırsın.
Goroutine'ler işletim sistemi iş parçacıklarından çok daha ucuzdur: birkaç kilobayt bellek ile başlar ve milyonlarcası aynı anda çalışabilir. Go'nun zamanlayıcısı (scheduler) bunları otomatik olarak CPU çekirdeklerine dağıtır.
Goroutine'ler aynı adres alanını paylaşır; bu yüzden iletişim için channel veya sync paketi kullanılır. Paylaşılan belleğe doğrudan erişim yarış (race) oluşturur.
Goroutine avantajları
Goroutine'lerin en büyük avantajı maliyettir. Bir işletim sistemi iş parçacığı 1–8 MB yığın ayırır; goroutine ise 2 KB ile başlar ve gerektikçe büyür.
Go'nun G-M-P modeli goroutine'leri verimli dağıtır: G goroutine, M makine (OS iş parçacığı), P processor (bağlam). Boşta kalan P'ler iş çalar (work stealing).
Bu sayede 100 binlerce goroutine aynı anda çalışabilir; bellek ve geçiş maliyeti düşük kalır.
Uygulama Goroutine başlat
main içine bir go func(){}() çağrısı ve fmt.Println ile goroutine başladı yazdır.
Başlangıç kodu
package main
import "fmt"
func main() {
// buraya yaz
}Örnek çözüm
package main
import "fmt"
func main() {
go func() {
fmt.Println("goroutine başladı")
}()
fmt.Println("goroutine başladı")
}Beklenen çıktı
goroutine başladı
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Goroutine başlatmak için hangi anahtar kelime kullanılır?
- async
- go Doğru cevap
- thread
- spawn
Açıklama: go kelimesi. async JavaScript'te, thread ve spawn başka dillerde kullanılır.
2 Goroutine anahtar kelimesi
Bir fonksiyonu arka planda başlatmak için başına ____ yazılır.
Bir fonksiyonu arka planda başlatmak için başına go yazılır.
Açıklama: go kelimesi goroutine başlatır.
3 Goroutine kavramlarını eşleştir
| Kavram | Anlamı |
|---|---|
goroutine |
Hafif iş parçacığı |
go |
Başlatma kelimesi |
G-M-P |
Zamanlayıcı modeli |
scheduler |
Dağıtıcı |