Sobes.tech
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