Sobes.tech
Junior

Kas yra gorutinos?

sobes.tech AI

Atsakymas iš AI

Lengvos vykdymo srautus, kuriuos valdo Go vykdymo aplinka. Jie kuriami naudojant raktinį žodį go prieš funkcijos kvietimą.

Pagrindinės savybės:

  • Mažesnis atminties suvartojimas: Gorutina pradeda su mažu steku (paprastai 2 KB), kuris gali būti dinamiškai didinamas arba mažinamas.
  • Greitesnis kūrimas: Gorutinos kūrimas yra daug greitesnis nei sisteminio srauto kūrimas.
  • Multiplexingas sisteminiuose srautuose: Daugelis gorutinų gali būti multiplexuojamos į mažesnį sisteminių srautų skaičių Go planuotojo.
  • Kooperatyvinis planavimas: Gorutinos nėra iš anksto nutraukiamos; jos savanoriškai perduoda kontrolę planuotojui (pavyzdžiui, blokuojančiuose iškvietimuose arba aiškiuose runtime.Gosched() iškvietimuose).

Kūrimo pavyzdys:

package main

import (
	"fmt"
	"time"
)

func sayHello() {
	fmt.Println("Sveiki iš gorutinų!")
}

func main() {
	go sayHello() // Paleisti kaip gorutiną
	fmt.Println("Sveiki iš pagrindinės funkcijos!")
	time.Sleep(1 * time.Second) // Kad pagrindinė funkcija neužbaigtų anksčiau nei gorutina
}

Palyginimas su gijomis:

Savybė Go gorutinos OS gijės
Valdymas Go vykdymo aplinka Operacinė sistema
Atminties naudojimas Žemas, dinamiška steka Aukštas, fiksuotas stekas
Kūrimas Greitas Lėtas
Planavimas Kooperatyvinis Preemptive
Sinchronizacija Kanalai, sync paketas Muteksai, OS semaforai