Parallel Extensions

[2][3] It also consists of a set of coordination data structures (CDS) – sets of data structures used to synchronize and co-ordinate the execution of concurrent tasks.

PLINQ is intended for exposing data parallelism by use of queries.

[2] Any computation on objects that has been implemented as queries can be parallelized by PLINQ.

However, the objects need to implement the IParallelEnumerable interface, which is defined by PLINQ itself.

When idle, each thread picks up a batch of Tasks and puts them on its local queue, where they are then executed, one by one.

As a result, if they use a shared resource, they still need to be synchronized manually using locks or other constructs.