Condividi tramite


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

Classe Control.Async (F#)

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

Cronologia delle modifiche

Data

Cronologia

Motivo

Agosto 2010

Aggiunto esempio di codice.

Miglioramento delle informazioni.