Метод 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, портативное