Senior
Tem uma ideia da diferença entre fluxo e processo?
sobes.tech IA
Resposta da IA
O processo é uma unidade independente de execução com o seu próprio espaço de endereços, recursos e estado. Um thread (goroutine em Go) é uma unidade mais leve dentro do processo, que partilha memória e recursos do processo, mas tem a sua própria pilha e contexto de execução.
Em Go, uma goroutine é um thread leve gerido pelo runtime do Go, permitindo executar milhares de tarefas em paralelo com custos mínimos em comparação com os threads do sistema.
Principais diferenças:
- O processo tem um espaço de endereços separado, os threads dentro do processo partilham memória.
- Criar um processo é mais dispendioso em recursos do que criar um thread.
- Em Go, uma goroutine são threads geridos ao nível da linguagem, não do sistema operativo.
Exemplo de criação de uma goroutine em Go:
func sayHello() {
fmt.Println("Olá de uma goroutine")
}
func main() {
go sayHello() // inicia a função numa goroutine
time.Sleep(time.Second) // espera para que a goroutine tenha tempo de executar
}