The System.Collections.Concurrent namespace provides several thread-safe collection classes that should be used in place of the corresponding types in the System.Collections and System.Collections.Generic namespaces whenever multiple threads are accessing the collection concurrently.
| Type | Reason |
|---|---|
| BlockingCollection<T> |
Provides blocking and bounding capabilities for thread-safe collections that implement System.Collections.Concurrent.IProducerConsumerCollection`1. |
| ConcurrentBag<T> |
Represents a thread-safe, unordered collection of objects. |
| ConcurrentDictionary<TKey,TValue> |
Represents a thread-safe collection of key/value pairs that can be accessed by multiple threads concurrently. |
| ConcurrentQueue<T> |
Represents a thread-safe first in-first out (FIFO) collection. |
| ConcurrentStack<T> |
Represents a thread-safe last in-first out (LIFO) collection. |
| EnumerablePartitionerOptions |
Specifies options to control the buffering behavior of a partitioner |
| IProducerConsumerCollection<T> |
Defines methods to manipulate thread-safe collections intended for producer/consumer usage. This interface provides a unified representation for producer/consumer collections so that higher level abstractions such as System.Collections.Concurrent.BlockingCollection`1 can use the collection as the underlying storage mechanism. |
| OrderablePartitioner<TSource> |
Represents a particular manner of splitting an orderable data source into multiple partitions. |
| Partitioner |
Provides common partitioning strategies for arrays, lists, and enumerables. |
| Partitioner<TSource> |
Represents a particular manner of splitting a data source into multiple partitions. |