Sobes.tech
Junior

Ce sunt goroutines?

sobes.tech AI

Răspuns de la AI

Fire de execuție ușoare, gestionate de mediul de execuție Go. Sunt create cu cuvântul cheie go înainte de apelarea unei funcții.

Caracteristici principale:

  • Consumul mai mic de memorie: Goroutine începe cu o stivă mică (de obicei 2 KB), care poate crește sau scade dinamic.
  • Creare mai rapidă: Crearea unei goroutine este mult mai rapidă decât crearea unui fir de sistem.
  • Multiplexare pe fire de sistem: Multe goroutine pot fi multiplexate pe un număr mai mic de fire de sistem de către planificatorul Go.
  • Planificare cooperativă: Goroutine-urile nu sunt întrerupte preemptiv; ele cedează voluntar controlul planificatorului (de exemplu, în apeluri blocante sau apeluri explicite runtime.Gosched()).

Exemplu de creare:

package main

import (
	"fmt"
	"time"
)

func sayHello() {
	fmt.Println("Salut din goroutine!")
}

func main() {
	go sayHello() // Rulează sayHello ca goroutine
	fmt.Println("Salut din funcția principală!")
	time.Sleep(1 * time.Second) // Pentru ca funcția principală să nu se termine înaintea goroutine-ului
}

Comparativ cu firele:

Caracteristici Goroutine Go Firele de sistem ale OS
Management Mediul de execuție Go Sistemul de operare
Consum de memorie Scăzut, stivă dinamică Ridicat, stivă fixă
Creare Rapid Lent
Planificare Cooperativă Preemptivă
Sincronizare Canale, pachet sync Mutex-uri, semafoare OS