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
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