Sobes.tech
Junior

Šta su goroutine?

sobes.tech АИ

Одговор од АИ

Lagana nit za izvršavanje, koju upravlja okruženje za izvršavanje Go. Kreira se ključnom reči go pre poziva funkcije.

Glavne karakteristike:

  • Manja potrošnja memorije: Gorutina počinje sa malom stekom (obično 2 KB), koja se može dinamički povećavati ili smanjivati.
  • Brža kreacija: Kreiranje gorutine je mnogo brže nego kreiranje sistemskog niti.
  • Multiplexiranje na sistemske niti: Mnoge gorutine mogu biti multiplexovane na manji broj sistemskih niti od strane planera Go.
  • Kooperativno planiranje: Gorutine se ne prekidaju preemptivno; one dobrovoljno prepuštaju kontrolu planeru (npr. pri blokirajućim pozivima ili eksplicitnim pozivima runtime.Gosched()).

Primer kreiranja:

package main

import (
	"fmt"
	"time"
)

func sayHello() {
	fmt.Println("Zdravo iz gorutine!")
}

func main() {
	go sayHello() // Pokreće sayHello kao gorutinu
	fmt.Println("Zdravo iz glavne funkcije!")
	time.Sleep(1 * time.Second) // Da glavna funkcija ne završi pre gorutine
}

Upoređenje sa nitima:

Osobina Go gorutine OS niti
Upravljanje Okruženje za izvršavanje Go Operativni sistem
Potrošnja memorije Niska, dinamička steka Visoka, fiksna steka
Kreiranje Brzo Sporo
Planiranje Kooperativno Preemptivno
Sinhronizacija Kanali, sync paket Muteksi, semafori OS-a