In breve,
Per concorrenza si intendono più attività che si avviano, si eseguono e si completano in periodi di tempo sovrapposti, senza un ordine specifico. Il parallelismo si verifica quando più attività O più parti di un'attività unica vengono eseguite letteralmente contemporaneamente, ad esempio su un processore multi-core.
Ricorda che concorrenza e parallelismo NON sono la stessa cosa.
Differenze tra concorrenza e parallelismo
Elenchiamo ora le notevoli differenze tra concorrenza e parallelismo.
La concorrenza è quando due attività possono essere avviate, eseguite e completate in periodi di tempo sovrapposti. Il parallelismo è quando i compiti vengono eseguiti letteralmente contemporaneamente, ad es. su un processore multi-core.
La concorrenza è la composizione di processi in esecuzione indipendente, mentre il parallelismo è l'esecuzione simultanea di calcoli (possibilmente correlati).
La concorrenza riguarda la gestione di molte cose contemporaneamente. Il parallelismo consiste nel fare molte cose contemporaneamente.
Un'applicazione può essere simultanea, ma non parallela, il che significa che elabora più di un'attività contemporaneamente, ma non sono in esecuzione due attività contemporaneamente.
Un'applicazione può essere parallela, ma non simultanea, il che significa che elabora contemporaneamente più attività secondarie di un'attività nella CPU multi-core.
Un'applicazione non può essere né parallela, né concorrente, il che significa che elabora tutte le attività una alla volta, in sequenza.
Un'applicazione può essere sia parallela che simultanea, il che significa che elabora contemporaneamente più attività nella CPU multi-core.
Concorrenza
La concorrenza è essenzialmente applicabile quando parliamo di almeno due attività o più. Quando un'applicazione è in grado di eseguire due attività praticamente contemporaneamente, la chiamiamo applicazione simultanea. Sebbene qui le attività vengano eseguite contemporaneamente, ma essenzialmente NON POSSONO. Sfruttano la funzionalità time-slicing della CPU del sistema operativo in cui ogni attività esegue parte della sua attività e quindi passa allo stato di attesa. Quando la prima attività è in stato di attesa, la CPU viene assegnata alla seconda attività per completarne la parte.
Il sistema operativo basato sulla priorità delle attività, quindi, assegna CPU e altre risorse informatiche, ad es. Memoria; svolta dopo svolta a tutte le attività e dare loro la possibilità di completare. Per l'utente finale, sembra che tutte le attività siano eseguite in parallelo. Questo si chiama concorrenza.
Parallelismo
Il parallelismo non richiede l'esistenza di due compiti. Esegue letteralmente fisicamente parti di attività O più attività, allo stesso tempo utilizzando l'infrastruttura multi-core della CPU, assegnando un core a ciascuna attività o attività secondaria.
Il parallelismo richiede essenzialmente hardware con più unità di elaborazione. Nella CPU single core, potresti ottenere concorrenza ma NON parallelismo.
Metodi asincroni
Questo non è correlato alla concorrenza e al parallelismo, l'asincronia viene utilizzata per presentare l'impressione di tasking simultaneo o parallelo, ma in effetti una chiamata di metodo asincrona viene normalmente utilizzata per un processo che deve fare lavoro lontano dall'applicazione corrente e non vogliamo attendere e bloccare la nostra applicazione in attesa di risposta.