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

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

    Sequenza di calcoli distinti da parallelizzare.

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

Vedere anche

Riferimenti

Classe Control.Async (F#)

Spazio dei nomi Microsoft.FSharp.Control (F#)