Sobes.tech
Middle+

Qual é a diferença entre processo, thread e goroutine?

sobes.tech IA

Resposta da IA

Um processo é uma unidade isolada de execução com seu próprio espaço de endereçamento, recursos e memória. Cada processo funciona de forma independente, e para trocar dados entre processos geralmente é usada a comunicação entre processos (IPC).

Um thread é um fluxo de execução leve dentro de um processo, que compartilha memória e recursos com outros threads do mesmo processo. Os threads permitem executar várias tarefas em paralelo dentro de um mesmo processo.

Uma goroutine é uma abstração de um thread leve na linguagem Go. As goroutines são muito mais leves em recursos do que os threads do sistema, e são gerenciadas pelo agendador do runtime Go. Elas permitem escrever código concorrente de forma mais simples e eficiente do que usando threads normais.

Exemplo de criação de uma goroutine em Go:

func sayHello() {
    fmt.Println("Olá de uma goroutine")
}

func main() {
    go sayHello() // iniciar a goroutine
    time.Sleep(time.Second) // esperar para que a goroutine seja executada
}