次の方法で共有


Async.Parallel<'T> メソッド (F#)

指定されたすべての非同期計算を実行する非同期計算を作成します。最初にそれぞれを作業項目としてキューに入れ、fork/join パターンを使用します。

名前空間/モジュール パス: Microsoft.FSharp.Control

アセンブリ: FSharp.Core (FSharp.Core.dll 内)

// Signature:
static member Parallel : seq<Async<'T>> -> Async<'T []>

// Usage:
Async.Parallel (computations)

パラメーター

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

    並列化される個別の計算のシーケンス。

戻り値

入力計算のシーケンスから値の配列を返す計算。

解説

すべての子計算に成功した場合は、結果の配列が成功の継続に渡されます。いずれかの子計算が例外を発生させた場合は、計算全体が例外をトリガーし、他の計算を取り消します。子計算の実行中に、計算全体が取り消しに応答します。取り消された場合、計算は残りの子計算をすべて取り消しますが、他の子計算の完了を引き続き待機します。

使用例

Async.Parallel を使用して、多数のファイルに非同期に書き込む計算を実行するコード例を次に示します。

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

プラットフォーム

Windows 8、Windows 7、Windows Server 2012 で Windows Server 2008 R2

バージョン情報

F# コア ライブラリのバージョン

サポート: ポータブル 2.0、4.0

参照

関連項目

Control.Async クラス (F#)

Microsoft.FSharp.Control 名前空間 (F#)