Middle+
Kiek procesų ar gijų gali turėti viena programa?
sobes.tech AI
Atsakymas iš AI
Vienoje programoje vienu metu paleistų procesų ir srautų skaičius nėra griežtai ribojamas pačios kalbos ar operacinės sistemos, o priklauso nuo sistemos išteklių (atminties, procesoriaus laiko) ir OS apribojimų.
Go kontekste:
- Procesai yra atskiros programos kopijos, valdomos operacinės sistemos, dažniausiai paleidžiamos per sisteminius iškvietimus.
- Go kalboje srautai nėra tiesiogiai kuriami, vietoje jų naudojamos goroutines, kurios yra lengvesnės nei srautai ir valdomos Go planuotojo.
Goroutines skaičius gali būti labai didelis (tūkstančiai ar net milijonai), ribojamas tik atminties ir našumo.
Goroutines kūrimo pavyzdys:
package main
import (
"fmt"
"time"
)
func worker(id int) {
fmt.Printf("Darbininkas %d pradėjo\n", id)
time.Sleep(time.Second)
fmt.Printf("Darbininkas %d baigė\n", id)
}
func main() {
for i := 0; i < 10; i++ {
go worker(i) // paleidžia 10 goroutines
}
time.Sleep(2 * time.Second) // laukia pabaigos
}
Taip, vienoje Go programoje gali būti paleista daug goroutines, o procesų skaičius priklauso nuo to, kiek kopijų programos paleisite.