Metodo Async.Parallel<'T> (F#)
Crea un oggetto di calcolo asincrono che esegue tutti i calcoli asincroni specificati, accodando inizialmente ciascun calcolo come elemento di lavoro e utilizzando un modello fork/join.
Percorso di spazio dei nomi/modulo: Microsoft.FSharp.Control
Assembly: FSharp.Core (in FSharp.Core.dll)
// Signature:
static member Parallel : seq<Async<'T>> -> Async<'T []>
// Usage:
Async.Parallel (computations)
Parametri
Valore restituito
Calcolo che restituisce una matrice di valori dalla sequenza di calcoli ricevuta in input.
Note
Se tutti i calcoli figlio vengono completati, una matrice di risultati verrà passata al codice di continuazione.Se un qualsiasi calcolo figlio genera un'eccezione, il calcolo globale genererà un'eccezione e anNullerà gli altri calcoli.Il calcolo globale risponderà alle richieste di anNullamento durante l'esecuzione dei calcoli figlio.Se anNullato, il calcolo anNullerà tutti i calcoli figlio restanti, ma attenderà il completamento degli altri calcoli figlio.
Esempio
Nell'esempio di codice riportato di seguito viene illustrato come utilizzare Async.Parallel per eseguire calcoli che scrivano in modo asincrono in diversi file.
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
Piattaforme
Windows 8, Windows 7, Windows Server 2012, Windows Server 2008 R2
Informazioni sulla versione
Versioni della libreria di base F#
Supportato in: 2,0, 4,0, portabile