Gibt es eine Möglichkeit, die Parallel.For
Version dieser for
Schleife zu erreichen?
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 ist. Enumerable.Range
keine Option
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:
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..
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.
Hier ist eine weitere Möglichkeit, um schrittweise Indizes zu verarbeiten
%Vor%Toans Antwort funktionierte für mich nach der Konvertierung in die neue Iterator-Funktion von VB.NET
%Vor%Tags und Links c# task-parallel-library parallel-processing for-loop