Sto cercando di determinare come AsParallel() divide è 'fonte', e in effetti ciò che si intende per 'fonte' ...In che modo AsParallel() si divide in "sorgente"?
Per esempio ...
public class CSVItem
{
public DateTime Date { get; set; }
public string AccountNumber { get; set; }
}
List<CSVItem> CSVItemList = new List<CSVItem>();
Poi mise 500k variabile CSVItem in CSVItemList.
usare:
CSVItemList = CSVItemList.AsParallel().OrderBy(x => x.AccountNumber).ThenBy(q => q.Date).ToList();
Sarà solo dividere la 'sorgente' (cioè per esempio 250k record su ciascuno dei due fili) su più fili asynch ed eseguire l'OrderBy() ThenBy() su ciascuno. thread quindi unisci i risultati ...
Oppure separerà OrderBy() e ThenBy() in thread separati ed eseguirli e quindi unire i risultati ... dando una lista stranamente ordinata?
[questo] (http://download.microsoft.com/download/B/C/F/BCFD4868-1354-45E3-B71B-B851CD78733D/WhenToUseParallelForEachOrPLINQ.pdf) potrebbe contenere le risposte alla tua domanda (in basso pagina 5). L'ho trovato nella [risposta] (http://stackoverflow.com/questions/3789998/parallel-foreach-vs-foreachienumerablet-asparallel) di un'altra domanda –