Middle+
Kui palju protsesse või niite võib ühes programmis olla?
sobes.tech AI
Vastus AI-lt
Ühes programmis ei ole samaegselt käivitatavate protsesside ja lõngade arv rangelt piiratud keele või operatsioonisüsteemiga, vaid sõltub süsteemi ressurssidest (mälu, CPU aeg) ja OS piirangutest.
Go kontekstis:
- Protsessid on eraldi eksemplarid programmist, mida haldab operatsioonisüsteem, tavaliselt käivitatakse need süsteemikutsedega.
- Go-s ei loodud lõngu otse, selle asemel kasutatakse goroutine-e, mis on kergemad kui lõngad ja mida haldab Go planeerija.
Goroutine-de arv võib olla väga suur (tuhanded või isegi miljonid), piiratud ainult mälu ja jõudlusega.
Goroutine-de loomise näide:
package main
import (
"fmt"
"time"
)
func worker(id int) {
fmt.Printf("Tööline %d alustas\n", id)
time.Sleep(time.Second)
fmt.Printf("Tööline %d lõpetas\n", id)
}
func main() {
for i := 0; i < 10; i++ {
go worker(i) // käivitab 10 goroutine-i
}
time.Sleep(2 * time.Second) // ootab lõpetamist
}
Sellisel viisil saab Go programmis käivitada palju goroutine-e ning protsesside arv sõltub sellest, mitu eksemplari programmi käivitate.