Freigeben über


Async.Parallel<'T>-Methode (F#)

Aktualisiert: August 2010

Erstellt eine asynchrone Berechnung, die alle angegebenen asynchronen Berechnungen ausführt; dabei werden die einzelnen Berechnungen zunächst als Arbeitsaufgaben in einer Warteschlange abgelegt, und es wird ein Verzweigungs-/Verknüpfungsmuster verwendet.

Namespace/Modulpfad: Microsoft.FSharp.Control

Assembly: FSharp.Core (in FSharp.Core.dll)

// Signature:
static member Parallel : seq<Async<'T>> -> Async<'T []>

// Usage:
Async.Parallel (computations)

Parameter

  • computations
    Typ: seq<Async<'T>>

    Eine Sequenz unterschiedlicher Berechnungen, die parallelisiert werden sollen.

Rückgabewert

Eine Berechnung, die ein Array von Werten aus der Sequenz von Eingabeberechnungen zurückgibt.

Hinweise

Wenn alle untergeordneten Berechnungen erfolgreich sind, wird ein Array von Ergebnissen an die Erfolgsfortsetzung übergeben. Wenn eine untergeordnete Berechnung eine Ausnahme auslöst, löst die Gesamtberechnung eine Ausnahme aus, und die anderen Berechnungen werden abgebrochen. Beim Ausführen der untergeordneten Berechnungen reagiert die Gesamtberechnung auf einen Abbruch. Bei einem Abbruch werden alle verbleibenden untergeordneten Berechnungen von der Berechnung abgebrochen; dabei wird jedoch abgewartet, bis die anderen untergeordneten Berechnungen abgeschlossen sind.

Beispiel

Im folgenden Codebeispiel wird veranschaulicht, wie mit Async.Parallel Berechnungen ausgeführt werden, die asynchron in mehrere Dateien schreiben.

let bufferData (number:int) =
    [| for count in 1 .. 1000 -> byte (count % 256) |]
    |> Array.permute (fun index -> index)

let writeFiles bufferData =
    Seq.init 1000 (fun num -> bufferData num)
    |> Seq.mapi (fun num value ->
        async {
            let fileName = "file" + num.ToString() + ".dat"
            use outputFile = System.IO.File.Create(fileName)
            do! outputFile.AsyncWrite(value)
        })
    |> Async.Parallel
    |> Async.Ignore

writeFiles bufferData
|> Async.Start

Plattformen

Windows 7, Windows Vista SP2, Windows XP SP3, Windows XP x64 SP2, Windows Server 2008 R2, Windows Server 2008 SP2, Windows Server 2003 SP2

Versionsinformationen

F#-Runtime

Unterstützt in: 2.0, 4.0

Silverlight

Unterstützt in: 3

Siehe auch

Weitere Ressourcen

Control.Async-Klasse (F#)

Microsoft.FSharp.Control-Namespace (F#)

Änderungsprotokoll

Datum

Versionsgeschichte

Grund

August 2010

Codebeispiel hinzugefügt.

Informationsergänzung.