Middle+
Câte procese sau fire de execuție poate avea un singur program?
sobes.tech AI
Răspuns de la AI
Într-un program, numărul de procese și fire de execuție care rulează simultan nu este strict limitat de limbaj sau de sistemul de operare, ci depinde de resursele sistemului (memorie RAM, timpul procesorului) și de restricțiile sistemului de operare.
În contextul Go:
- Procesele sunt instanțe separate ale unui program, gestionate de sistemul de operare, de obicei inițiate prin apeluri de sistem.
- În Go, firele de execuție nu sunt create direct, în locul lor se folosesc goroutines, care sunt mai ușoare decât firele și sunt gestionate de planificatorul Go.
Numărul de goroutines poate fi foarte mare (mii sau chiar milioane), limitat doar de memorie și performanță.
Exemplu de creare a goroutines:
package main
import (
"fmt"
"time"
)
func worker(id int) {
fmt.Printf("Lucrător %d a început\n", id)
time.Sleep(time.Second)
fmt.Printf("Lucrător %d a terminat\n", id)
}
func main() {
for i := 0; i < 10; i++ {
go worker(i) // pornește 10 goroutines
}
time.Sleep(2 * time.Second) // așteaptă finalizarea
}
Astfel, într-un program Go pot fi rulate multe goroutines, iar numărul de procese depinde de câte instanțe ale programului vei porni.