Middle+
Quantos processos ou threads podem ser executados por um único programa?
sobes.tech IA
Resposta da IA
Num programa, a quantidade de processos e threads que são executados simultaneamente não é estritamente limitada pela linguagem ou pelo sistema operativo, mas depende dos recursos do sistema (memória RAM, tempo de CPU) e das restrições do sistema operativo.
No contexto do Go:
- Os processos são instâncias separadas de um programa, geridas pelo sistema operativo, geralmente iniciadas através de chamadas ao sistema.
- Os threads em Go não são criados diretamente, em vez disso, usam-se goroutines, que são mais leves que os threads e são geridas pelo agendador do Go.
O número de goroutines pode ser muito grande (milhares ou até milhões), limitado apenas pela memória e pelo desempenho.
Exemplo de criação de goroutines:
package main
import (
"fmt"
"time"
)
func worker(id int) {
fmt.Printf("Trabalhador %d iniciado\n", id)
time.Sleep(time.Second)
fmt.Printf("Trabalhador %d terminado\n", id)
}
func main() {
for i := 0; i < 10; i++ {
go worker(i) // inicia 10 goroutines
}
time.Sleep(2 * time.Second) // espera pela conclusão
}
Desta forma, num programa em Go podem ser executadas muitas goroutines, e a quantidade de processos depende de quantas instâncias do programa você iniciar.