Sobes.tech
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
}