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 7, Windows Vista SP2, Windows XP SP3, Windows XP x64 SP2, Windows Server 2008 R2, Windows Server 2008 SP2, Windows Server 2003 SP2.
Informazioni sulla versione
F# Runtime
Supportato in: 2.0, 4.0
Silverlight
Supportato in: 3
Vedere anche
Riferimenti
Spazio dei nomi Microsoft.FSharp.Control (F#)
Cronologia delle modifiche
Data |
Cronologia |
Motivo |
---|---|---|
Agosto 2010 |
Aggiunto esempio di codice. |
Miglioramento delle informazioni. |