Concorrenza VS Parallelismo

Jan 04 2023
La concorrenza si riferisce alla capacità di un programma o di un sistema di eseguire più attività contemporaneamente o contemporaneamente. Ciò può essere ottenuto in diversi modi, incluso l'utilizzo di più core della CPU, l'utilizzo di più processi o l'utilizzo di più thread all'interno di un singolo processo.

La concorrenza si riferisce alla capacità di un programma o di un sistema di eseguire più attività contemporaneamente o contemporaneamente. Ciò può essere ottenuto in diversi modi, incluso l'utilizzo di più core della CPU, l'utilizzo di più processi o l'utilizzo di più thread all'interno di un singolo processo. La concorrenza può essere utile per migliorare le prestazioni e l'efficienza di determinati tipi di programmi, come quelli che eseguono attività di lunga durata o comportano molte attese.

Cos'è il parallelismo?

Il parallelismo, d'altra parte, si riferisce alla capacità di eseguire più attività contemporaneamente, in genere utilizzando più core della CPU. Il parallelismo è una forma di concorrenza, ma richiede l'uso di hardware specializzato, come un processore multi-core, per ottenere una vera esecuzione simultanea.

Differenza

La differenza cruciale tra concorrenza e parallelismo è che la concorrenza riguarda la gestione di molte cose contemporaneamente (dà l'illusione della simultaneità) o la gestione di eventi concorrenti che essenzialmente nascondono la latenza. Al contrario, il parallelismo consiste nel fare molte cose contemporaneamente per aumentare la velocità. Quindi, in poche parole, la concorrenza consente a più attività di essere in corso contemporaneamente, ma non necessariamente in esecuzione contemporaneamente. Il parallelismo, d'altra parte, richiede che più attività vengano eseguite contemporaneamente.

Esempio

Immagina di gestire un ristorante e di dover svolgere le seguenti attività:

  • Cucina il cibo
  • Servi il cibo ai clienti
  • Lava i piatti

Tuttavia, se assumi dipendenti aggiuntivi, puoi suddividere le attività tra loro ed eseguire più attività contemporaneamente. Ad esempio, un dipendente può cucinare il cibo, un altro può servire il cibo ai clienti e un terzo può pulire i piatti. Questo è un esempio di concorrenza, poiché più attività sono in corso contemporaneamente, ma potrebbero non essere necessariamente eseguite contemporaneamente.

D'altra parte, se si investe in attrezzature specializzate, come una lavastoviglie e un robot da cucina, è possibile eseguire le attività in parallelo, con ciascuna apparecchiatura che gestisce un'attività separata. Ad esempio, la lavastoviglie potrebbe pulire i piatti mentre il robot da cucina prepara gli ingredienti per il prossimo lotto di cibo. Questo è un esempio sia di concorrenza che di parallelismo, poiché più attività sono in corso contemporaneamente e vengono anche eseguite contemporaneamente.

Riepilogo

In sintesi, la concorrenza consente l'esecuzione simultanea di più attività, ma non necessariamente l'esecuzione simultanea, mentre il parallelismo richiede l'esecuzione simultanea di più attività.

Nei blog futuri approfondiremo il multi-threading e il multi-processing . Questi saranno una serie di blog per educare argomenti in queste aree correlate.

Buon apprendimento !!