Sobes.tech
Middle+

Kolik procesů nebo vláken může mít jeden program?

sobes.tech AI

Odpověď od AI

V jednom programu není počet současně spuštěných procesů a vláken přísně omezen jazykem nebo operačním systémem, ale závisí na systémových zdrojích (operační paměti, procesorovém čase) a omezeních OS.

V kontextu Go:

  • Procesy jsou samostatné instance programu, spravované operačním systémem, obvykle spuštěné pomocí systémových volání.
  • Vlákna v Go nejsou přímo vytvářena, místo nich se používají gorutiny, které jsou lehčí než vlákna a jsou spravovány plánovačem Go.

Počet gorutin může být velmi velký (tisíce nebo i miliony), omezen pouze pamětí a výkonem.

Příklad tvorby gorutin:

package main

import (
    "fmt"
    "time"
)

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

func main() {
    for i := 0; i < 10; i++ {
        go worker(i) // spouští 10 gorutin
    }
    time.Sleep(2 * time.Second) // čeká na dokončení
}

Tímto způsobem může být v programu v Go spuštěno mnoho gorutin, a počet procesů závisí na tom, kolik instancí programu spustíte.