Qual è la differenza tra concorrenza e parallelismo?
sobes.tech AI
Risposta dell'AI
La concorrenza è la capacità di un sistema di gestire più compiti che possono essere eseguiti parzialmente contemporaneamente, alternando tra loro. La parallelizzazione è l'esecuzione simultanea di più compiti su diversi core del processore.
In parole semplici, la concorrenza riguarda l'organizzazione del lavoro affinché più compiti possano progredire, mentre la parallelizzazione riguarda l'esecuzione simultanea di questi compiti.
In Go, la concorrenza si ottiene tramite goroutine e canali, e la parallelizzazione si verifica quando queste goroutine vengono effettivamente eseguite contemporaneamente su diversi core.
Esempio di concorrenza in 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)
}
Qui, i compiti "A" e "B" vengono eseguiti in modo concorrente, alternando tra loro, e se vengono eseguiti su un processore multi-core, possono essere eseguiti in parallelo.