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 7, Windows Vista SP2, Windows XP SP3, Windows XP x64 SP2, Windows Server 2008 R2, Windows Server 2008 SP2, Windows Server 2003 SP2

Informations de version

Runtime F#

Pris en charge dans : 2.0, 4.0

Silverlight

Prise en charge dans : 3

Voir aussi

Référence

Control.Async, classe (F#)

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

Historique des modifications

Date

Historique

Motif

Août 2010

Ajout d'un exemple de code

Améliorations apportées aux informations.