La programmazione parallela all'interno del .NET Framework 4.0 trova la sua realizzazione attraverso l'uso della Task Parallel Library (TPL). Queste nuove API introdotte con il .NET Framework 4.0 ci consentono per l'appunto di sviluppare in modalità parallela. Ma cosa significa esattamente questo?
A differenza del multi-threading in cui potevamo eseguire thread indipendenti tra loro ed in concorrenza sulle risorse del sistema su un unico processore, nella programmazione parallela troviamo il concetto di Task ovvero parti di una stessa attività che vengono eseguite parallelamente su tutti i core disponibili. I Task quindi, a differenza dei thread, non sono indipendenti tra loro perché appartengono ad una stessa ed unica attività di partenza che è stata suddivisa in parti.
Ovviamente anche in questo caso le problematiche da risolvere non sono di poco conto (deadlock, race conditions, ecc) ma con un po' di esperienza si possono ottenere risultati interessanti.
Anche i Task utilizzano i Thread (un task viene eseguito all'interno di un thread recuperato dal thread pool) ma la novità sta nel fatto che i thread possono essere eseguiti da core differenti della CPU quindi realmente in parallelo.