Sobes.tech
Junior

Co jsou gorutiny?

sobes.tech AI

Odpověď od AI

Lehké vlákna, které spravuje prostředí běhu Go. Jsou vytvářeny klíčovým slovem go před voláním funkce.

Hlavní vlastnosti:

  • Menší spotřeba paměti: Gorutina začíná s malou zásobou (obvykle 2 KB), která může být dynamicky zvětšena nebo zmenšena.
  • Rychlejší vytvoření: Vytvoření gorutiny je mnohem rychlejší než vytvoření systémového vlákna.
  • Multiplexování na systémová vlákna: Mnoho gorutin může být multiplexováno na menší počet systémových vláken plánovačem Go.
  • Kooperativní plánování: Gorutiny nejsou předčasně přerušovány; dobrovolně předávají kontrolu plánovači (například při blokujících voláních nebo explicitních voláních runtime.Gosched()).

Příklad vytvoření:

package main

import (
	"fmt"
	"time"
)

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

func main() {
	go sayHello() // Spouští sayHello jako gorutinu
	fmt.Println("Ahoj z hlavní funkce!")
	time.Sleep(1 * time.Second) // Aby hlavní funkce neskončila dříve než gorutina
}

Porovnání s vlákny:

Vlastnost Gorutiny Go Systémová vlákna
Řízení Prostředí běhu Go Operační systém
Spotřeba paměti Nízká, dynamická zásobník Vysoká, pevný zásobník
Vytváření Rychlé Pomalé
Plánování Kooperativní Předčasné
Synchronizace Kanály, balíček sync Mutexy, semafory OS