Sobes.tech
Middle+

Koľko procesov alebo vlákien môže mať jeden program?

sobes.tech AI

Odpoveď od AI

V jednom programe početok súčasne spustených procesov a vlákien nie je prísne obmedzený jazykom alebo operačným systémom, ale závisí od systémových zdrojov (RAM, procesorový čas) a obmedzení OS.

V kontexte Go:

  • Procesy sú samostatné inštancie programu, spravované operačným systémom, zvyčajne spustené cez systémové volania.
  • Vo Go sa vlákna priamo nevytvárajú, namiesto toho sa používajú goroutines, ktoré sú ľahšie ako vlákna a spravované plánovačom Go.

Počet goroutines môže byť veľmi veľký (tisíce alebo aj milióny), obmedzený iba pamäťou a výkonom.

Príklad vytvárania goroutines:

package main

import (
    "fmt"
    "time"
)

func worker(id int) {
    fmt.Printf("Pracovník %d začal\n", id)
    time.Sleep(time.Second)
    fmt.Printf("Pracovník %d skončil\n", id)
}

func main() {
    for i := 0; i < 10; i++ {
        go worker(i) // spustí 10 goroutines
    }
    time.Sleep(2 * time.Second) // čaká na ukončenie
}

Týmto spôsobom môže byť v programe v Go spustených veľké množstvo goroutines, a počet procesov závisí od toho, koľko inštancií programu spustíte.