Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1908, comments - 2047, trackbacks - 352

My Links

News

Your host

This is me! Questo spazio è dedicato a Microsoft® .NET®, di cui sono molto appassionato :-)

Cookie e Privacy

Disabilita cookie ShinyStat

Microsoft MVP

My MVP Profile

Microsoft Certified Professional

Microsoft Specialist

Xamarin Certified Mobile Developer

Il mio libro su VB 2015!

Pre-ordina il mio libro su VB 2015 Pre-ordina il mio libro "Visual Basic 2015 Unleashed". Clicca sulla copertina per informazioni!

Il mio libro su WPF 4.5.1!

Clicca sulla copertina per informazioni! E' uscito il mio libro "Programmare con WPF 4.5.1". Clicca sulla copertina per informazioni!

These postings are provided 'AS IS' for entertainment purposes only with absolutely no warranty expressed or implied and confer no rights.
If you're not an Italian user, please visit my English blog

Le vostre visite

I'm a VB!

Guarda la mia intervista a Seattle

Follow me on Twitter!

Altri spazi

GitHub
I miei progetti open-source su GitHub

Article Categories

Archives

Post Categories

Image Galleries

Privacy Policy

Parallelizzazione totale delle query in Parallel LINQ

Tempo fa, in questo post, introducemmo Parallel LINQ e vedemmo come questo consenta di scalare l'esecuzione di query LINQ su architetture multi-core semplicemente richiamando il metodo extension AsParallel e senza fare grosse modifiche alle query stesse.

La cosa carina è che PLINQ è in grado di capire, a seconda della forma ("shape") della query, in quale fase della query stessa debba applicare o meno l'algoritmo di parallelizzazione al fine di ottenere un concreto vantaggio. Gli operatori utilizzati influenzano tale decisione da parte di PLINQ, oppure, secondo la documentazione, se una query ha un singolo delegate che fa un lavoro minimo non verrà parallelizzata. Tuttavia si può forzare l'esecuzione parallela della query utilizzando il metodo extension chiamato WithExecutionMode da richiamare dopo AsParallel e a cui si passa l'argomento ParallelExecutionMode.ForceParallelism (ParallelExecutionMode è un enumerazione il cui altro membro è Default, quindi non necessario).

Si utilizza in questo modo (la banale query, ovviamente, serve solo come esempio d'uso del metodo):

    Private Sub ForcingParallelism()

        Dim processes = Process.GetProcesses.AsParallel.WithExecutionMode(ParallelExecutionMode.ForceParallelism)

    End Sub

Alessandro

Print | posted on domenica 6 settembre 2009 19:12 | Filed Under [ LINQ Parallel Programming ]

Powered by:
Powered By Subtext Powered By ASP.NET