Async.Parallel<'T> 方法 (F#)

创建一个执行所有给定异步计算的异步计算,它先将每个异步计算作为工作项进行排队,并使用分离/连接模式。

命名空间/模块路径: 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>>

    要并行化的 distinct 计算的序列。

返回值

从输入计算序列返回值的数组的计算。

备注

如果所有子计算都成功,则将结果数组传递给成功延续。 如果任何子计算引发异常,则整体计算将触发异常,并取消其他操作。 整体计算将在执行子计算时响应取消。 如果取消,计算将取消所有其余子计算,但仍将等待其他子计算完成。

示例

以下代码示例演示如何使用 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#)