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.

However, access to elements of a collection object through extension methods or through explicit interface implementations are not guaranteed to be thread-safe and may need to be synchronized by the caller.

Classes

Name Description
BlockingCollection

Provides blocking and bounding capabilities for thread-safe collections that implement IProducerConsumerCollection.

ConcurrentBag

Represents a thread-safe, unordered collection of objects.

ConcurrentDictionary

Represents a thread-safe collection of key/value pairs that can be accessed by multiple threads concurrently.

ConcurrentQueue

Represents a thread-safe first in-first out (FIFO) collection.

ConcurrentStack

Represents a thread-safe last in-first out (LIFO) collection.

OrderablePartitioner

Represents a particular manner of splitting an orderable data source into multiple partitions.

Partitioner

Provides common partitioning strategies for arrays, lists, and enumerables.

Partitioner

Represents a particular manner of splitting a data source into multiple partitions.

Structs

Name Description
ConcurrentDictionary.AlternateLookup

Provides a type that may be used to perform operations on a ConcurrentDictionary using a TAlternateKey as a key instead of a TKey.

Interfaces

Name Description
IProducerConsumerCollection

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 BlockingCollection can use the collection as the underlying storage mechanism.

Enums

Name Description
EnumerablePartitionerOptions

Specifies options to control the buffering behavior of a partitioner.