Поделиться через


Метод 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>>

    Последовательность неодинаковых вычислений, подлежащих параллелизации.

Возвращаемое значение

Вычисление, которое возвращает массив значений из последовательности входных вычислений.

Заметки

Если все дочерние вычисления выполнены успешно, массив результатов передается далее.Если какое-либо дочернее вычисление вызывает исключение, общее вычисление вызывает исключение и отменяет другие.Общее вычисление прореагирует на отмену, выполняя дочерние вычисления.Если вычисление отменено, оно отменяет оставшиеся дочерние вычисления, но ожидает выполнения других дочерних вычислений.

Пример

В следующем примере кода показано, как использовать 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 2008 Server R2

Сведения о версии

Основной версии библиотеки F#

Поддерживается в: 2.0, 4.0, портативное

См. также

Ссылки

Класс Control.Async (F#)

Пространство имен Microsoft.FSharp.Control (F#)