Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1909, 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

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

Collezioni "concurrent" in .NET 4.0: ConcurrentQueue(Of T)

In un precedente post abbiamo iniziato a parlare delle collezioni "concurrent" che vengono introdotte da .NET Framework 4.0, che fanno parte del namespace System.Collections.Concurrent, dicendo che si tratta di collezioni thread-safe che consentono l'accesso parallelo da parte di più task/thread. La volta scorsa abbiamo parlato della ConcurrentBag(Of T), stavolta introduciamo la ConcurrentQueue(Of T) con esempi in Visual Basic 2010. Questa è una implementazione thread-safe della ben nota Queue(Of T), una collezione che consente di accodare e rimuovere dalla coda una serie fortemente tipizzata di oggetti, secondo una logica FIFO (First-in, First-out) dove il primo elemento accodato è il primo ad uscire dalla coda.

L'utilizzo è esemplificato dal seguente codice:

        'Si crea l’istanza

        Dim cq As New ConcurrentQueue(Of Integer)

 

        'Aggiunge elementi

        cq.Enqueue(3)

        cq.Enqueue(2)

        cq.Enqueue(1)

 

        'Rimuove un elemento

        Dim item As Integer

        'Visualizza “3”

        cq.TryDequeue(item)

        Console.WriteLine(item)

 

        'Restituisce "2":

        Console.WriteLine(cq.Count)

Niente di diverso dalla Queue, se non il modo con cui gli elementi vengono rimossi. Si usa infatti il metodo TryDequeue che riceve, come argomento, una variabile passata per riferimento a cui viene assegnato l'elemento estratto. Infine, la proprietà Count restituisce il numero di elementi presenti nella collezione. Nel prossimo post parleremo della ConcurrentStack(Of T).

Alessandro

Print | posted on giovedì 7 gennaio 2010 00:12 | Filed Under [ Parallel Programming ]

Powered by:
Powered By Subtext Powered By ASP.NET