O .NET Framework 4.0 introduz uma série de novas classes úteis para auxiliar o suporte a programação paralela, divididas em três grupos:


Concurrent Collection Classes

System.Collections.Concurrent.BlockingCollection(T)
System.Collections.Concurrent.ConcurrentBag(T)
System.Collections.Concurrent.ConcurrentDictionary(TKey, TValue)
System.Collections.Concurrent.ConcurrentQueue(T)
System.Collections.Concurrent.ConcurrentStack(T)

Essas novas classes trazem meios de trabalharmos com collections com alta performance em cenários de onde múltiplas threads estão manipulando coleções removendo ou adicionando itens.

Synchronization Primitives

System.Threading.Barrier
System.Threading.CountdownEvent
System.Threading.ManualResetEventSlim
System.Threading.SemaphoreSlim
System.Threading.SpinLock
System.Threading.SpinWait

Permite que múltiplas threadings trabalhem com algoritmos de forma paralela.


Lazy Initialization Classes

System.Lazy(T)
System.Threading.ThreadLocal(T)
System.Threading.LazyInitializer

Controla a alocação na memória de forma que seja utilizada apenas quando necessário.