Parallel.Für die Verwendung von Schritt! = 1

8

Gibt es eine Möglichkeit, die Parallel.For Version dieser for Schleife zu erreichen?

%Vor%

Ich sehe keine Überlastung, die einen Schrittparameter akzeptiert, obwohl ich keinen Grund dafür finden kann, dass dies logisch unmöglich wäre.

Die akzeptierte Antwort auf dies und Diese Frage schlägt vor, Parallel.ForEach in einem Bereich von int s zu verwenden, der mit% co_de generiert wurde %, aber in meinem Fall verwende ich lokale Thread-Daten , so dass Enumerable.Range keine Option ist.

Eine andere Möglichkeit besteht darin, einfach zu überprüfen, ob Parallel.ForEach im Körper meiner Schleife und i % 2 == 0 ist, aber dies führt immer noch die lokalen Thread-Daten intialiser return und finalizer Func aus. Im Folgenden finden Sie ein Code-Snippet, das diese Option demonstriert:

%Vor%     
Rotem 26.12.2012, 19:16
quelle

4 Antworten

14

Hier ist ein Hinweis:

%Vor%

Sehen Sie sich im Allgemeinen an, ob Sie die Anzahl der Iterationen und eine Umwandlung von der Iterationsnummer in den Variablenwert ermitteln können.

    
Ben Voigt 26.12.2012, 19:19
quelle
3

Bens Vorschlag ist sehr gut für konstanten Schritt z.B. +2, +3 usw.

Alternativ (wenn Ihr Schritt zufällig ist) können Sie Parallel.ForEach z. B..

verwenden %Vor%

Die Variable i ruft Daten von input array ab. Sie könnten input durch Enumerable.Range ersetzen (oder kombinieren Sie es mit With etc.)

Das würde perfekt funktionieren, wenn Sie nur die Primzahl in i Variable erhalten möchten.

    
Tom 26.12.2012 19:41
quelle
3

Hier ist eine weitere Möglichkeit, um schrittweise Indizes zu verarbeiten

%Vor%     
Toan Nguyen 27.12.2012 10:31
quelle
0

Toans Antwort funktionierte für mich nach der Konvertierung in die neue Iterator-Funktion von VB.NET

%Vor%     
anachostic 11.04.2017 13:02
quelle