Partager via


Async.Parallel<'T>, méthode (F#)

Crée un calcul asynchrone qui exécute tous les calculs asynchrones donnés, en plaçant initialement chaque calcul dans une file d'attente comme des éléments de travail et en utilisant un modèle de bifurcation/jointure.

Espace de noms/Chemin du module : Microsoft.FSharp.Control

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

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

// Usage:
Async.Parallel (computations)

Paramètres

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

    Séquence de calculs distincts à paralléliser.

Valeur de retour

Calcul qui retourne un tableau de valeurs de la séquence de calculs d'entrée.

Notes

Si tous les calculs enfants réussissent, un tableau de résultats est passé à la continuation de réussite.Si un calcul enfant lève une exception, le calcul total lève une exception et annule les autres.Le calcul total répond à l'annulation en exécutant les calculs enfants.En cas d'annulation, le calcul annule tous les calculs enfants restants mais attend que les autres calculs enfants se terminent.

Exemple

L'exemple de code suivant montre comment utiliser Async.Parallel pour exécuter des calculs qui écrivent sur un certain nombre de fichiers de façon asynchrone.

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

Plateformes

Windows 8, Windows 7, Windows Server 2012, Windows Server 2008 R2

Informations de version

Versions de bibliothèque principale F#

Prise en charge dans : 2,0, 4,0, portables

Voir aussi

Référence

Control.Async, classe (F#)

Microsoft.FSharp.Control, espace de noms (F#)