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


Метод 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 7, Windows Vista с пакетом обновления 2 (SP2), Windows XP с пакетом обновления 3 (SP3), Windows XP x64 с пакетом обновления 2 (SP2), Windows Server 2008 R2, Windows Server 2008 с пакетом обновления 2 (SP2), Windows Server 2003 с пакетом обновления 2 (SP2)

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

Среда выполнения F#

Поддерживается в версиях 2.0, 4.0

Silverlight

Поддерживается в версии 3

См. также

Ссылки

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

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

Журнал изменений

Дата

Журнал

Причина

Август 2010

Добавлен пример кода.

Улучшение информации.