2016-11-04 5 views
0

Ich glaube nicht, verstehe ich die Parallele zur Schleife .. wenn ich versuche, dieses ProgrammC# Parallel zur Schleife

Parallel.For(1, 20, i => 
    { 
     Thread.Sleep(200); 
     Console.WriteLine(i); 
    }); 

wird es ausspucken:

1 
10 
19 
2 
11 
4 
3 
12 
5 
6 
13 
17 
7 
14 
18 
8 
15 
9 
16 

, was ich will zu tun ist eine For-Schleife Gewinde mit einer Grenze von 20 Threads haben und es so ausdrucken, 1,2,3,4,5,6,7,8,9,10 .. ect

+2

Dies ist, was passiert in einer Multithread-Umgebung. Die Threads werden nicht in der Reihenfolge ausgeführt, in der sie von ihnen erwartet werden. Die Lösung ist nicht zu erwarten, dass sie in dieser Reihenfolge laufen, oder verwenden Sie keine Parallele für – meJustAndrew

+0

Sie wollen also Parallelität, aber Sie wollen jede Operation auf die vorherige warten? – CodeCaster

+0

@meJustAndrew hat irgendwelche Vorschläge, wie ich meine Aufgabe erfüllen kann? –

Antwort

3

Wenn Sie laufen parallel eine Schleife, Sie nicht lange Es gibt keine Garantie für die Reihenfolge der Ergebnisse. Das ist so ziemlich Multi-Threading 101 :)

Wenn Sie eine garantierte Bestellung benötigen, vermeiden Sie Nebenwirkungen und bestellen Sie die Ergebnisse.