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