c# - How does AsParallel() split it's 'source'? -


i'm trying determine how asparallel() splits it's 'source', , indeed meant 'source'...

for example...

public class csvitem {     public datetime date { get; set; }     public string accountnumber { get; set; } }  list<csvitem> csvitemlist = new list<csvitem>(); 

then put 500k varying csvitem's csvitemlist.

then use:

csvitemlist = csvitemlist.asparallel().orderby(x => x.accountnumber).thenby(q => q.date).tolist(); 

will split 'source' (meaning example 250k records onto each of 2 threads) onto multiple asynch threads , perform orderby().thenby() on each thread merge results...

or separate orderby() , thenby() onto separate threads , run them , merge results... giving strangely ordered list?

it gose 1 one a) done orderby merge result , gose b) thenby. below image form albahari blog shows how works i.e. take 1 one

enter image description here

q: how many number of task

a : can decide using withdegreeofparallelism forces plinq run specified number of tasks simultaneously

   //create 5 task    list.asparallel().withdegreeofparallelism(5) 

check : parallel programming


Comments