Junior
Goroutine nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Go çalışma ortamı tarafından yönetilen hafif yürütme akışları. Fonksiyon çağrısından önce go anahtar kelimesi ile oluşturulur.
Ana özellikler:
- Daha az bellek kullanımı: Goroutine, küçük bir yığınla (genellikle 2 KB) başlar ve dinamik olarak artırılabilir veya azaltılabilir.
- Daha hızlı oluşturma: Bir goroutine oluşturmak, sistem thread'inden çok daha hızlıdır.
- Sistem thread'leri üzerinde çoklama: Birden fazla goroutine, Go zamanlayıcısı tarafından daha az sistem thread'ine çoklanabilir.
- Kooperatif zamanlama: Goroutine'ler zorunlu olarak kesilmez; kontrolü gönüllü olarak zamanlayıcıya devrederler (örneğin, engelleyici çağrılar veya açıkça
runtime.Gosched()çağrıları sırasında).
Oluşturma örneği:
package main
import (
"fmt"
"time"
)
func sayHello() {
fmt.Println("Goroutine'den merhaba!")
}
func main() {
go sayHello() // sayHello'yu bir goroutine olarak başlat
fmt.Println("Ana fonksiyondan merhaba!")
time.Sleep(1 * time.Second) // Ana fonksiyonun, goroutine'den önce bitmemesi için
}
İş parçacıklarıyla karşılaştırma:
| Özellik | Go Goroutine'leri | İşletim Sistemi İş Parçacıkları |
|---|---|---|
| Yönetim | Go çalışma ortamı | İşletim sistemi |
| Bellek kullanımı | Düşük, dinamik yığın | Yüksek, sabit yığın |
| Oluşum | Hızlı | Yavaş |
| Planlama | Kooperatif | Preemptif |
| Senkronizasyon | Kanallar, sync paketi | Müzakereler, işletim sistemi semaforleri |