Sobes.tech
Middle

Qual é a diferença entre concorrência e paralelismo?

sobes.tech IA

Resposta da IA

A concorrência é a capacidade de um sistema gerir várias tarefas que podem ser executadas parcialmente ao mesmo tempo, alternando entre elas. A paralelização é a execução simultânea de várias tarefas em diferentes núcleos do processador.

Simplificando, a concorrência é sobre organizar o trabalho para que várias tarefas possam progredir, enquanto a paralelização refere-se à execução simultânea dessas tarefas.

Em Go, a concorrência é alcançada com goroutines e canais, e a paralelização ocorre quando essas goroutines são realmente executadas ao mesmo tempo em diferentes núcleos do processador.

Exemplo de concorrência em Go:

package main
import (
    "fmt"
    "time"
)
func task(name string) {
    for i := 0; i < 3; i++ {
        fmt.Println(name, "passo", i)
        time.Sleep(100 * time.Millisecond)
    }
}
func main() {
    go task("A")
    go task("B")
    time.Sleep(500 * time.Millisecond)
}

Aqui, as tarefas "A" e "B" são executadas de forma concorrente, alternando entre si, e se forem executadas em um processador multinúcleo, podem ocorrer em paralelo.