Sobes.tech
Junior

Kas ir goroutines?

sobes.tech AI

Atbilde no AI

Vieglās izpildes plūsmas, kuras pārvalda Go izpildes vide. Tās tiek izveidotas ar atslēgvārdu go pirms funkcijas izsaukšanas.

Galvenās īpašības:

  • Mazāka atmiņas patēriņš: Gorušīna sākas ar nelielu steka izmēru (parasti 2 KB), kas var dinamiski palielināties vai samazināties.
  • Ātrāka izveide: Gorušīnas izveide ir daudz ātrāka nekā operētājsistēmas pavediena izveide.
  • Multiplēksēšana uz operētājsistēmas pavedieniem: Daudzas gorušīnas var tikt multiplēkotas uz mazāku skaitu operētājsistēmas pavedienu, ko plāno Go izpildes vide.
  • Kooperatīva plānošana: Gorušīnas netiek piespiedu kārtā izstumtas; tās brīvprātīgi nodod kontroli plānotājam (piemēram, bloķējošu izsaukumu vai tiešu runtime.Gosched() izsaukumu gadījumā).

Piemērs izveidei:

package main

import (
	"fmt"
	"time"
)

func sayHello() {
	fmt.Println("Sveiciens no gorušīnas!")
}

func main() {
	go sayHello() // Sākam sayHello kā gorušīnu
	fmt.Println("Sveiciens no galvenās funkcijas!")
	time.Sleep(1 * time.Second) // Lai galvenā funkcija nepabeigtos pirms gorušīnas
}

Salīdzinājums ar pavedieniem:

Raksturlielums Go gorušīnas OS pavedieni
Pārvaldība Go izpildes vide Operētājsistēma
Atmiņas patēriņš Zems, dinamisks steks Augsts, fiksēts steks
Izveide Ātra Lēna
Plānošana Kooperatīva Piespiedu izstumšana
Sinhronizācija Kanāli, sync pakotne Mūtes, semafori OS