Parallelität vs. normale Sammlung?C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Parallelität vs. normale Sammlung?

Post by Anonymous »

Ich habe eine Frage zu System.Collections.Concurrent
Ich habe gesehen, dass Concurrent tatsächlich eine sichere Thread-Sammlung ist, aber in welchen Fällen kann sie hilfreich sein?
Ich habe zwei Beispiele erstellt und das Ergebnis ist das gleiche
Zuerst die ConcurrentQueue:

Code: Select all

    static ConcurrentQueue queue = new ConcurrentQueue();
private static readonly object obj = new object();
static int i = 0;
static int Num = 0;
static void Run(object loopNum)
{
lock (obj)
{
for (int N = 0; N < 10; N++)
{
queue.Enqueue (i);
Thread.Sleep(250);
queue.TryDequeue(out Num);
Console.WriteLine($"{Num} Added! in {loopNum} Loop, ThreadID: [{Thread.CurrentThread.ManagedThreadId}]");
i++;
}
}
}
Und jetzt die normale Warteschlange:

Code: Select all

    static Queue queue = new Queue();
private static readonly object obj = new object();
static int i = 0;

static void Run(object loopNum)
{
lock (obj)
{
for (int N = 0; N < 10; N++)
{
queue.Enqueue (i);
Thread.Sleep(250);
Console.WriteLine($"{queue.Dequeue()} Added! in {loopNum} Loop, ThreadID: [{Thread.CurrentThread.ManagedThreadId}]");
i++;
}
}
}
Hauptseite:

Code: Select all

    static void Main()
{
Thread[] Th = new Thread[] { new Thread(Run), new Thread(Run) };
Th[0].Start("First");
Th[1].Start("Second");

Console.ReadKey();
}
Das Ergebnis ist dasselbe
Sicher, es gibt einige verschiedene Methoden wie TryDequeue und ein paar mehr, aber wofür ist es wirklich hilfreich?
Jede Hilfe wird sehr geschätzt

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post