Wie, um eine IEnumerable-Methode parallel-Methode

Nach diesem post, Ich will parallelisieren dieser Methode :

    public IEnumerable<string> GetAllLogs(IEnumerable<IComputer> computers)
    {
        foreach (var cpt in computers)
        {
            foreach (var log in cpt.GetLogs())
            {
                yield return log;
            }
        }
    }

Möchte ich die Methode "geben gibt" ist ein Protokoll, wenn man von der Methode GetLogs fertig ist. Wenn ich 4 Computer gibt :

  • Computer 01 : "a", "b", "c", "d", "e"
  • Computer 02 : "1", "2", "3", "4", "5"
  • Computer-03 : "alpha", "beta", "gamma", "delta", "epsilon"
  • Computer 04 : "I", "II", "III", "IV", "V"

Mit der "sequenzielle Methode", die Ausgabe ist :

a
b
c
d
e
1
2
3
4
5
alpha
beta
gamma
delta
epsilon
I
II
III
IV
V

Und der Methoden läuft in 20 Sekunden. es ist ein Thread.Sleep(1000) im GetLogs Methode.

Möchte ich die Ausgabe sieht wie folgt aus :

III
a
4
gamma
b
c
IV
5
d
II
beta
e
1
2
delta
alpha
3
epsilon
I

und verläuft in wenigen Sekunden.

Möchte ich die Methoden liefert ein IEnumerable

InformationsquelleAutor Florian | 2011-11-24
Schreibe einen Kommentar