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: ConcurrentStack(Of T)

Nell'ultimo post dedicato alle collezioni concurrent, introdotte da .NET 4.0 come collezioni thread-safe, abbiamo introdotto la ConcurrentQueue(Of T). In questo post parliamo invece di un'altra collection che ha un approccio simile ma contrario, ossia la ConcurrentStack(Of T). In sostanza si tratta della controparte thread-safe della ben nota collezione Stack(Of T), che ha un approccio di tipo LIFO (Last-in, First-out). Il seguente codice mostra un esempio di utilizzo:

        'Si crea l'istanza

        Dim cs As New ConcurrentStack(Of Integer)

 

        'Aggiunta di un elemento

        cs.Push(0)

        'Aggiunta di un array

        cs.PushRange(New Integer() {1, 2, 3, 4})

 

        'Dichiara un array

        Dim items() As Integer = New Integer(3) {}

 

        'Rimuove l'array dallo stack

        'e lo invia alla variabile

        cs.TryPopRange(items, 0, 4)

 

        'Itera l'array

        Array.ForEach(Of Integer)(items, Sub(i)

                                             Console.WriteLine(i)

                                         End Sub)

 

        'Rimuove un elemento

        Dim oneItem As Integer

        cs.TryPop(oneItem)

        Console.WriteLine(oneItem) 'Visualizza 0

Due cose da notare. La prima è che, a differenza della classica Stack, è qui possibile aggiungere alla collezione anche un array di elementi col metodo PushRange. Tale array può essere rimosso dalla collezione tramite il metodo TryPopRange, che invia, per riferimento, il risultato della rimozione alla variabile specificata. Stesso discorso vale per il metodo TryPop che rimuove un singolo elemento dalla collezione e lo passa per riferimento alla data variabile. Nel prossimo post ci occuperemo di descrivere la ConcurrentDictionary(Of TKey, TValue).

Alessandro

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

Powered by:
Powered By Subtext Powered By ASP.NET