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.