Sobes.tech
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.