Esiste sicuramente una sovrapposizione tra multithreading e codifica/calcolo parallelo, con le principali differenze nell'architettura di elaborazione di destinazione.
Multithreading è stato usato per sfruttare i vantaggi della concorrenza all'interno di un singolo processo su una singola CPU con memoria condivisa. L'esecuzione degli stessi programmi su una macchina con più CPU può comportare un notevole aumento della velocità, ma spesso è un bonus piuttosto che previsto (fino a poco tempo fa). Molti SO hanno modelli di threading (ad esempio pthreads), che beneficiano ma non richiedono più CPU.
Multiprocessing è il modello standard per parallelo programmazione mira CPU multiple, dalle macchine SMP primi con molte CPU su una grande macchina, poi a cluster di calcolo in molte macchine, e ora di nuovo a molte CPU/core su un computer singolo. MPI è uno standard che può funzionare su molte diverse architetture.
Naturalmente, è possibile programmare un progetto parallelo utilizzando thread con framework di linguaggio come OpenMP. Ho sentito parlare di GUI/applicazioni multicomponenti che si basano su un'elaborazione separata che teoricamente potrebbe funzionare ovunque. In pratica, c'è più del primo rispetto al secondo.
Probabilmente la distinzione principale è quando il programma viene eseguito su più macchine, dove non è pratico utilizzare il multithreading e le applicazioni esistenti che condividono la memoria non funzioneranno.
http: //channel9.msdn. it/post/VisualStudio/Utilizzo-the-Parallel-Extensions-to-the-NET-Framework/ – eschneider