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.