irfo
Moderatör
- Katılım
- 7 Ocak 2026
- Mesajlar
- 290
- Tepkime puanı
- 2
- Puanları
- 18
Milyonlarca İş Parçacığı
Java veya C# gibi dillerde bir "Thread" oluşturmak maliyetlidir (yaklaşık 1MB RAM yer). Bu yüzden binlerce thread açarsanız sunucu çökebilir.Go'da ise Goroutine'ler vardır. Bunlar İşletim Sistemi thread'i değil, Go'nun kendi yönettiği süper hafif (başlangıçta 2KB) parçacıklardır. Tek bir sunucuda milyonlarca Goroutine çalıştırabilirsiniz.go
Bir fonksiyonun başına go yazdığınız anda, o fonksiyon ana akıştan kopar ve arka planda kendi başına çalışmaya başlar.
Kod:
package main
import ("fmt""time")
func ekranaYaz(mesaj string) {for i := 0; i < 5; i++ {fmt.Println(mesaj, i)time.Sleep(100 * time.Millisecond)}}
func main() {// Bu normal çalışır (Bitmesini bekleriz)// ekranaYaz("Normal")
// Bu bir Goroutine olarak çalışır (Beklemeyiz, hemen alt satıra geçer)<br>go ekranaYaz("Goroutine 1")<br><br>// Bu da başka bir Goroutine<br>go ekranaYaz("Goroutine 2")<br><br>// DİKKAT: Ana fonksiyon (main) bir Goroutine'dir.<br>// Eğer main biterse, diğer goroutine'lerin işi bitmese bile program kapanır.<br>// Bu yüzden şimdilik yapay bir bekleme koyuyoruz.<br>time.Sleep(1 * time.Second)<br>fmt.Println("Program Bitti")<br>
}