Sobes.tech
Senior

Ai o idee despre diferența dintre flux și proces?

sobes.tech AI

Răspuns de la AI

Procesul este o unitate independentă de execuție cu propriul spațiu de adrese, resurse și stare. Un fir de execuție (goroutine în Go) este o unitate mai ușoară în interiorul procesului, care împărtășește memoria și resursele procesului, dar are propriul stiv și context de execuție.

În Go, o goroutine este un fir de execuție ușor gestionat de runtime-ul Go, care permite rularea a mii de sarcini în paralel cu costuri minime comparativ cu firele de sistem.

Principalele diferențe:

  • Procesul are un spațiu de adrese separat, firele din interiorul procesului împart memoria.
  • Crearea unui proces este mai costisitoare în resurse decât crearea unui fir.
  • În Go, goroutine-urile sunt fire gestionate la nivel de limbaj, nu de sistemul de operare.

Exemplu de creare a unei goroutine în Go:

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

func main() {
    go sayHello() // pornește funcția într-o goroutine
    time.Sleep(time.Second) // așteaptă pentru ca goroutine să se finalizeze
}