Sobes.tech
Junior

Čo sú gorutiny?

sobes.tech AI

Odpoveď od AI

Ľahké vlákna na vykonávanie, ktoré spravuje prostredie behu Go. Sú vytvorené kľúčovým slovom go pred volaním funkcie.

Hlavné vlastnosti:

  • Menšia spotreba pamäte: Gorutina začína s malým zásobníkom (zvyčajne 2 KB), ktorý sa môže dynamicky zväčšovať alebo zmenšovať.
  • Rýchlejšie vytvorenie: Vytvorenie gorutiny je oveľa rýchlejšie ako vytvorenie systémového vlákna.
  • Multiplexovanie na systémové vlákna: Mnoho gorútin môže byť multiplexovaných na menší počet systémových vlákien plánovačom Go.
  • Kooperatívne plánovanie: Gorutiny nie sú predčasne prerušované; dobrovoľne odovzdávajú kontrolu plánovaču (napríklad pri blokujúcich volaniach alebo explicitných volaniach runtime.Gosched()).

Príklad vytvorenia:

package main

import (
	"fmt"
	"time"
)

func sayHello() {
	fmt.Println("Ahoj z gorutiny!")
}

func main() {
	go sayHello() // Spúšťa sayHello ako gorutinu
	fmt.Println("Ahoj z hlavnej funkcie!")
	time.Sleep(1 * time.Second) // Aby hlavná funkcia neskončila skôr ako gorutina
}

Porovnanie s vláknami:

Vlastnosť Gorutiny Go Vlákna OS
Riadenie Prostredie behu Go Operačný systém
Spotreba pamäte Nízka, dynamická zásobník Vysoká, pevná zásobník
Vytváranie Rýchle Pomalé
Plánovanie Kooperatívne Predbežné
Synchronizácia Kanály, sync balíček Mutexy, semafory OS